bitkeeper revision 1.821 (406007d6uu0vZYDxa9P1ZfNO9kF_Cg)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 23 Mar 2004 09:48:06 +0000 (09:48 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 23 Mar 2004 09:48:06 +0000 (09:48 +0000)
Many files:
  xeno -> xen renames.
ide-xen.c:
  Rename: xen/drivers/ide/ide-xeno.c -> xen/drivers/ide/ide-xen.c
xen.lds:
  Rename: xen/arch/i386/xeno.lds -> xen/arch/i386/xen.lds
Many files:
  mvdir

402 files changed:
.rootkeys
BitKeeper/etc/ignore
xen/Makefile
xen/Rules.mk
xen/arch/i386/Rules.mk
xen/arch/i386/acpitable.c
xen/arch/i386/apic.c
xen/arch/i386/boot/boot.S
xen/arch/i386/delay.c
xen/arch/i386/domain_page.c
xen/arch/i386/entry.S
xen/arch/i386/extable.c
xen/arch/i386/flushtlb.c
xen/arch/i386/i387.c
xen/arch/i386/i8259.c
xen/arch/i386/idle0_task.c
xen/arch/i386/io_apic.c
xen/arch/i386/ioremap.c
xen/arch/i386/irq.c
xen/arch/i386/mm.c
xen/arch/i386/mpparse.c
xen/arch/i386/nmi.c
xen/arch/i386/pci-dma.c
xen/arch/i386/pci-i386.c
xen/arch/i386/pci-irq.c
xen/arch/i386/pci-pc.c
xen/arch/i386/pdb-stub.c
xen/arch/i386/process.c
xen/arch/i386/setup.c
xen/arch/i386/smp.c
xen/arch/i386/smpboot.c
xen/arch/i386/time.c
xen/arch/i386/trampoline.S
xen/arch/i386/traps.c
xen/arch/i386/usercopy.c
xen/arch/i386/xen.lds [new file with mode: 0644]
xen/arch/i386/xeno.lds [deleted file]
xen/arch/x86_64/Rules.mk
xen/common/ac_timer.c
xen/common/brlock.c
xen/common/debug-linux.c
xen/common/debug.c
xen/common/dom0_ops.c
xen/common/dom_mem_ops.c
xen/common/domain.c
xen/common/event.c
xen/common/event_channel.c
xen/common/kernel.c
xen/common/keyhandler.c
xen/common/lib.c
xen/common/memory.c
xen/common/network.c
xen/common/page_alloc.c
xen/common/perfc.c
xen/common/physdev.c
xen/common/rbtree.c
xen/common/resource.c
xen/common/sched_bvt.c
xen/common/sched_rrobin.c
xen/common/schedule.c
xen/common/slab.c
xen/common/softirq.c
xen/common/string.c
xen/common/timer.c
xen/common/trace.c
xen/common/vsprintf.c
xen/drivers/block/blkpg.c
xen/drivers/block/cciss.c
xen/drivers/block/cciss.h
xen/drivers/block/cciss_scsi.c
xen/drivers/block/elevator.c
xen/drivers/block/genhd.c
xen/drivers/block/ll_rw_blk.c
xen/drivers/block/xen_block.c
xen/drivers/block/xen_vbd.c
xen/drivers/cdrom/cdrom.c
xen/drivers/char/console.c
xen/drivers/char/keyboard.c
xen/drivers/char/serial.c
xen/drivers/ide/ide-cd.c
xen/drivers/ide/ide-cd.h
xen/drivers/ide/ide-disk.c
xen/drivers/ide/ide-dma.c
xen/drivers/ide/ide-features.c
xen/drivers/ide/ide-geometry.c
xen/drivers/ide/ide-pci.c
xen/drivers/ide/ide-probe.c
xen/drivers/ide/ide-taskfile.c
xen/drivers/ide/ide-xen.c [new file with mode: 0644]
xen/drivers/ide/ide-xeno.c [deleted file]
xen/drivers/ide/ide.c
xen/drivers/ide/ide_modes.h
xen/drivers/ide/piix.c
xen/drivers/message/fusion/isense.h
xen/drivers/message/fusion/linux_compat.h
xen/drivers/message/fusion/mptbase.c
xen/drivers/message/fusion/mptbase.h
xen/drivers/message/fusion/mptscsih.c
xen/drivers/message/fusion/mptscsih.h
xen/drivers/message/fusion/scsi3.h
xen/drivers/net/3c59x.c
xen/drivers/net/8139too.c
xen/drivers/net/Space.c
xen/drivers/net/dummy.c
xen/drivers/net/e100/e100.h
xen/drivers/net/e100/e100_config.c
xen/drivers/net/e100/e100_config.h
xen/drivers/net/e100/e100_eeprom.c
xen/drivers/net/e100/e100_main.c
xen/drivers/net/e100/e100_phy.c
xen/drivers/net/e100/e100_phy.h
xen/drivers/net/e100/e100_test.c
xen/drivers/net/e100/e100_ucode.h
xen/drivers/net/e1000/e1000.h
xen/drivers/net/e1000/e1000_ethtool.c
xen/drivers/net/e1000/e1000_hw.c
xen/drivers/net/e1000/e1000_hw.h
xen/drivers/net/e1000/e1000_main.c
xen/drivers/net/e1000/e1000_osdep.h
xen/drivers/net/e1000/e1000_param.c
xen/drivers/net/e1000/kcompat.c
xen/drivers/net/e1000/kcompat.h
xen/drivers/net/net_init.c
xen/drivers/net/pcnet32.c
xen/drivers/net/setup.c
xen/drivers/net/tg3.c
xen/drivers/net/tulip/21142.c
xen/drivers/net/tulip/eeprom.c
xen/drivers/net/tulip/interrupt.c
xen/drivers/net/tulip/media.c
xen/drivers/net/tulip/pnic.c
xen/drivers/net/tulip/pnic2.c
xen/drivers/net/tulip/tulip.h
xen/drivers/net/tulip/tulip_core.c
xen/drivers/pci/compat.c
xen/drivers/pci/names.c
xen/drivers/pci/pci.c
xen/drivers/pci/proc.c
xen/drivers/pci/quirks.c
xen/drivers/pci/setup-bus.c
xen/drivers/pci/setup-irq.c
xen/drivers/pci/setup-res.c
xen/drivers/pci/syscall.c
xen/drivers/scsi/BusLogic.c
xen/drivers/scsi/BusLogic.h
xen/drivers/scsi/FlashPoint.c.inc
xen/drivers/scsi/aacraid/aachba.c
xen/drivers/scsi/aacraid/aacraid.h
xen/drivers/scsi/aacraid/commctrl.c
xen/drivers/scsi/aacraid/comminit.c
xen/drivers/scsi/aacraid/commsup.c
xen/drivers/scsi/aacraid/dpcsup.c
xen/drivers/scsi/aacraid/linit.c
xen/drivers/scsi/aacraid/rx.c
xen/drivers/scsi/aacraid/sa.c
xen/drivers/scsi/aic7xxx/aic79xx_osm.c
xen/drivers/scsi/aic7xxx/aic79xx_osm.h
xen/drivers/scsi/aic7xxx/aic7xxx_osm.c
xen/drivers/scsi/aic7xxx/aic7xxx_osm.h
xen/drivers/scsi/constants.c
xen/drivers/scsi/hosts.c
xen/drivers/scsi/hosts.h
xen/drivers/scsi/megaraid.c
xen/drivers/scsi/megaraid.h
xen/drivers/scsi/scsi.c
xen/drivers/scsi/scsi.h
xen/drivers/scsi/scsi_dma.c
xen/drivers/scsi/scsi_error.c
xen/drivers/scsi/scsi_ioctl.c
xen/drivers/scsi/scsi_lib.c
xen/drivers/scsi/scsi_merge.c
xen/drivers/scsi/scsi_module.c.inc
xen/drivers/scsi/scsi_obsolete.c
xen/drivers/scsi/scsi_proc.c
xen/drivers/scsi/scsi_queue.c
xen/drivers/scsi/scsi_scan.c
xen/drivers/scsi/scsi_syms.c
xen/drivers/scsi/scsicam.c
xen/drivers/scsi/sd.c
xen/drivers/scsi/sd.h
xen/drivers/scsi/sym53c8xx_2/sym53c8xx.h
xen/drivers/scsi/sym53c8xx_2/sym_glue.c
xen/drivers/scsi/sym53c8xx_2/sym_glue.h
xen/include/asm-i386/apic.h
xen/include/asm-i386/atomic.h
xen/include/asm-i386/bitops.h
xen/include/asm-i386/byteorder.h
xen/include/asm-i386/cache.h
xen/include/asm-i386/dma.h
xen/include/asm-i386/domain_page.h
xen/include/asm-i386/fixmap.h
xen/include/asm-i386/flushtlb.h
xen/include/asm-i386/hardirq.h
xen/include/asm-i386/i387.h
xen/include/asm-i386/ide.h
xen/include/asm-i386/io.h
xen/include/asm-i386/io_apic.h
xen/include/asm-i386/irq.h
xen/include/asm-i386/mc146818rtc.h
xen/include/asm-i386/page.h
xen/include/asm-i386/pci.h
xen/include/asm-i386/pdb.h
xen/include/asm-i386/pgalloc.h
xen/include/asm-i386/processor.h
xen/include/asm-i386/smp.h
xen/include/asm-i386/spinlock.h
xen/include/asm-i386/string.h
xen/include/asm-i386/system.h
xen/include/asm-i386/timex.h
xen/include/asm-i386/types.h
xen/include/asm-i386/uaccess.h
xen/include/asm-x86_64/apic.h
xen/include/asm-x86_64/atomic.h
xen/include/asm-x86_64/bitops.h
xen/include/asm-x86_64/byteorder.h
xen/include/asm-x86_64/cache.h
xen/include/asm-x86_64/dma.h
xen/include/asm-x86_64/domain_page.h
xen/include/asm-x86_64/fixmap.h
xen/include/asm-x86_64/flushtlb.h
xen/include/asm-x86_64/hardirq.h
xen/include/asm-x86_64/i387.h
xen/include/asm-x86_64/ide.h
xen/include/asm-x86_64/io.h
xen/include/asm-x86_64/io_apic.h
xen/include/asm-x86_64/irq.h
xen/include/asm-x86_64/mc146818rtc.h
xen/include/asm-x86_64/page.h
xen/include/asm-x86_64/pci.h
xen/include/asm-x86_64/pda.h
xen/include/asm-x86_64/pdb.h
xen/include/asm-x86_64/pgalloc.h
xen/include/asm-x86_64/processor.h
xen/include/asm-x86_64/smp.h
xen/include/asm-x86_64/spinlock.h
xen/include/asm-x86_64/system.h
xen/include/asm-x86_64/timex.h
xen/include/asm-x86_64/types.h
xen/include/asm-x86_64/uaccess.h
xen/include/hypervisor-ifs/hypervisor-if.h
xen/include/scsi/scsicam.h
xen/include/xen/ac_timer.h [new file with mode: 0644]
xen/include/xen/blk.h [new file with mode: 0644]
xen/include/xen/blkdev.h [new file with mode: 0644]
xen/include/xen/blkpg.h [new file with mode: 0644]
xen/include/xen/brlock.h [new file with mode: 0644]
xen/include/xen/byteorder/big_endian.h [new file with mode: 0644]
xen/include/xen/byteorder/generic.h [new file with mode: 0644]
xen/include/xen/byteorder/little_endian.h [new file with mode: 0644]
xen/include/xen/byteorder/pdp_endian.h [new file with mode: 0644]
xen/include/xen/byteorder/swab.h [new file with mode: 0644]
xen/include/xen/byteorder/swabb.h [new file with mode: 0644]
xen/include/xen/cache.h [new file with mode: 0644]
xen/include/xen/cdrom.h [new file with mode: 0644]
xen/include/xen/compiler.h [new file with mode: 0644]
xen/include/xen/config.h [new file with mode: 0644]
xen/include/xen/console.h [new file with mode: 0644]
xen/include/xen/crc32.h [new file with mode: 0644]
xen/include/xen/ctype.h [new file with mode: 0644]
xen/include/xen/delay.h [new file with mode: 0644]
xen/include/xen/elevator.h [new file with mode: 0644]
xen/include/xen/errno.h [new file with mode: 0644]
xen/include/xen/etherdevice.h [new file with mode: 0644]
xen/include/xen/ethtool.h [new file with mode: 0644]
xen/include/xen/event.h [new file with mode: 0644]
xen/include/xen/genhd.h [new file with mode: 0644]
xen/include/xen/hdreg.h [new file with mode: 0644]
xen/include/xen/hdsmart.h [new file with mode: 0644]
xen/include/xen/ide.h [new file with mode: 0644]
xen/include/xen/if.h [new file with mode: 0644]
xen/include/xen/if_ether.h [new file with mode: 0644]
xen/include/xen/if_packet.h [new file with mode: 0644]
xen/include/xen/if_vlan.h [new file with mode: 0644]
xen/include/xen/in.h [new file with mode: 0644]
xen/include/xen/init.h [new file with mode: 0644]
xen/include/xen/interrupt.h [new file with mode: 0644]
xen/include/xen/ioctl.h [new file with mode: 0644]
xen/include/xen/ioport.h [new file with mode: 0644]
xen/include/xen/irq.h [new file with mode: 0644]
xen/include/xen/irq_cpustat.h [new file with mode: 0644]
xen/include/xen/kdev_t.h [new file with mode: 0644]
xen/include/xen/kernel.h [new file with mode: 0644]
xen/include/xen/keyhandler.h [new file with mode: 0644]
xen/include/xen/lib.h [new file with mode: 0644]
xen/include/xen/list.h [new file with mode: 0644]
xen/include/xen/major.h [new file with mode: 0644]
xen/include/xen/mii.h [new file with mode: 0644]
xen/include/xen/mm.h [new file with mode: 0644]
xen/include/xen/module.h [new file with mode: 0644]
xen/include/xen/multiboot.h [new file with mode: 0644]
xen/include/xen/net_headers.h [new file with mode: 0644]
xen/include/xen/netdevice.h [new file with mode: 0644]
xen/include/xen/notifier.h [new file with mode: 0644]
xen/include/xen/pci.h [new file with mode: 0644]
xen/include/xen/pci_ids.h [new file with mode: 0644]
xen/include/xen/perfc.h [new file with mode: 0644]
xen/include/xen/perfc_defn.h [new file with mode: 0644]
xen/include/xen/prefetch.h [new file with mode: 0644]
xen/include/xen/rbtree.h [new file with mode: 0644]
xen/include/xen/reboot.h [new file with mode: 0644]
xen/include/xen/sched-if.h [new file with mode: 0644]
xen/include/xen/sched.h [new file with mode: 0644]
xen/include/xen/serial.h [new file with mode: 0644]
xen/include/xen/skbuff.h [new file with mode: 0644]
xen/include/xen/slab.h [new file with mode: 0644]
xen/include/xen/smp.h [new file with mode: 0644]
xen/include/xen/socket.h [new file with mode: 0644]
xen/include/xen/sockios.h [new file with mode: 0644]
xen/include/xen/spinlock.h [new file with mode: 0644]
xen/include/xen/string.h [new file with mode: 0644]
xen/include/xen/time.h [new file with mode: 0644]
xen/include/xen/timer.h [new file with mode: 0644]
xen/include/xen/timex.h [new file with mode: 0644]
xen/include/xen/tqueue.h [new file with mode: 0644]
xen/include/xen/trace.h [new file with mode: 0644]
xen/include/xen/types.h [new file with mode: 0644]
xen/include/xen/vbd.h [new file with mode: 0644]
xen/include/xen/version.h [new file with mode: 0644]
xen/include/xen/vif.h [new file with mode: 0644]
xen/include/xeno/ac_timer.h [deleted file]
xen/include/xeno/blk.h [deleted file]
xen/include/xeno/blkdev.h [deleted file]
xen/include/xeno/blkpg.h [deleted file]
xen/include/xeno/brlock.h [deleted file]
xen/include/xeno/byteorder/big_endian.h [deleted file]
xen/include/xeno/byteorder/generic.h [deleted file]
xen/include/xeno/byteorder/little_endian.h [deleted file]
xen/include/xeno/byteorder/pdp_endian.h [deleted file]
xen/include/xeno/byteorder/swab.h [deleted file]
xen/include/xeno/byteorder/swabb.h [deleted file]
xen/include/xeno/cache.h [deleted file]
xen/include/xeno/cdrom.h [deleted file]
xen/include/xeno/compiler.h [deleted file]
xen/include/xeno/config.h [deleted file]
xen/include/xeno/console.h [deleted file]
xen/include/xeno/crc32.h [deleted file]
xen/include/xeno/ctype.h [deleted file]
xen/include/xeno/delay.h [deleted file]
xen/include/xeno/elevator.h [deleted file]
xen/include/xeno/errno.h [deleted file]
xen/include/xeno/etherdevice.h [deleted file]
xen/include/xeno/ethtool.h [deleted file]
xen/include/xeno/event.h [deleted file]
xen/include/xeno/genhd.h [deleted file]
xen/include/xeno/hdreg.h [deleted file]
xen/include/xeno/hdsmart.h [deleted file]
xen/include/xeno/ide.h [deleted file]
xen/include/xeno/if.h [deleted file]
xen/include/xeno/if_ether.h [deleted file]
xen/include/xeno/if_packet.h [deleted file]
xen/include/xeno/if_vlan.h [deleted file]
xen/include/xeno/in.h [deleted file]
xen/include/xeno/init.h [deleted file]
xen/include/xeno/interrupt.h [deleted file]
xen/include/xeno/ioctl.h [deleted file]
xen/include/xeno/ioport.h [deleted file]
xen/include/xeno/irq.h [deleted file]
xen/include/xeno/irq_cpustat.h [deleted file]
xen/include/xeno/kdev_t.h [deleted file]
xen/include/xeno/kernel.h [deleted file]
xen/include/xeno/keyhandler.h [deleted file]
xen/include/xeno/lib.h [deleted file]
xen/include/xeno/list.h [deleted file]
xen/include/xeno/major.h [deleted file]
xen/include/xeno/mii.h [deleted file]
xen/include/xeno/mm.h [deleted file]
xen/include/xeno/module.h [deleted file]
xen/include/xeno/multiboot.h [deleted file]
xen/include/xeno/net_headers.h [deleted file]
xen/include/xeno/netdevice.h [deleted file]
xen/include/xeno/notifier.h [deleted file]
xen/include/xeno/pci.h [deleted file]
xen/include/xeno/pci_ids.h [deleted file]
xen/include/xeno/perfc.h [deleted file]
xen/include/xeno/perfc_defn.h [deleted file]
xen/include/xeno/prefetch.h [deleted file]
xen/include/xeno/rbtree.h [deleted file]
xen/include/xeno/reboot.h [deleted file]
xen/include/xeno/sched-if.h [deleted file]
xen/include/xeno/sched.h [deleted file]
xen/include/xeno/serial.h [deleted file]
xen/include/xeno/skbuff.h [deleted file]
xen/include/xeno/slab.h [deleted file]
xen/include/xeno/smp.h [deleted file]
xen/include/xeno/socket.h [deleted file]
xen/include/xeno/sockios.h [deleted file]
xen/include/xeno/spinlock.h [deleted file]
xen/include/xeno/string.h [deleted file]
xen/include/xeno/time.h [deleted file]
xen/include/xeno/timer.h [deleted file]
xen/include/xeno/timex.h [deleted file]
xen/include/xeno/tqueue.h [deleted file]
xen/include/xeno/trace.h [deleted file]
xen/include/xeno/types.h [deleted file]
xen/include/xeno/vbd.h [deleted file]
xen/include/xeno/version.h [deleted file]
xen/include/xeno/vif.h [deleted file]
xen/net/dev.c
xen/net/dev_mcast.c
xen/net/devinit.c
xen/net/eth.c
xen/net/skbuff.c

index 26a04cd31c717591007d04e32457ae373603f3a1..933bfc3d28904a597e41cab9c25a20fcc7a0e487 100644 (file)
--- a/.rootkeys
+++ b/.rootkeys
 3ddb79bccYVzXZJyVaxuv5T42Z1Fsw xen/arch/i386/trampoline.S
 3ddb79bcOftONV9h4QCxXOfiT0h91w xen/arch/i386/traps.c
 3ddb79bc4nTpGQOe6_-MbyZzkhlhFQ xen/arch/i386/usercopy.c
-3ddb79bcOMCu9-5mKpjIh5d0qqBDPg xen/arch/i386/xeno.lds
+3ddb79bcOMCu9-5mKpjIh5d0qqBDPg xen/arch/i386/xen.lds
 404f1b91uzXgPOtIhs8UZPGbZvlHfg xen/arch/x86_64/Rules.mk
 3ddb79bdff-gj-jFGKjOejeHLqL8Lg xen/common/Makefile
 3e397e66AyyD5fYraAySWuwi9uqSXg xen/common/ac_timer.c
 3ddb79bdYcxXT-2UEaDcG0Ic4MIK1g xen/drivers/ide/ide-pci.c
 3ddb79bdOXTbcImJo8DwmlNX88k78Q xen/drivers/ide/ide-probe.c
 3ddb79bdDWFwINnKn29RlFDwGJhjYg xen/drivers/ide/ide-taskfile.c
-3e4a8d40XMqvT05EwZwJg1HMsFDUBA xen/drivers/ide/ide-xeno.c
+3e4a8d40XMqvT05EwZwJg1HMsFDUBA xen/drivers/ide/ide-xen.c
 3ddb79bdkDY1bSOYkToP1Cc49VdBxg xen/drivers/ide/ide.c
 3ddb79bdPyAvT_WZTAFhaX0jp-yXSw xen/drivers/ide/ide_modes.h
 3e4a8d401aSwOzCScQXR3lsmNlAwUQ xen/drivers/ide/piix.c
 3ddb79c4R4iVwqIIeychVQYmIH4FUg xen/include/scsi/scsi_ioctl.h
 3ddb79c4yw_mfd4Uikn3v_IOPRpa1Q xen/include/scsi/scsicam.h
 3ddb79c4HKPMLvDBP9LxzPi_szVxGA xen/include/scsi/sg.h
-3e397e66m2tO3s-J8Jnr7Ws_tGoPTg xen/include/xeno/ac_timer.h
-3ddb79c0nTsjSpVK4ZVTI9WwN24xtQ xen/include/xeno/blk.h
-3ddb79c0dVhTHLsv6CPTf4baKix4mA xen/include/xeno/blkdev.h
-3ddb79c18ePBgitnOs7GiOCFilODVw xen/include/xeno/blkpg.h
-3ddb79c1oOjpQbp68MW7yiUpoi-S-w xen/include/xeno/brlock.h
-3ddb79c1x7Ie3kifu7dQRx8y7HVyvA xen/include/xeno/byteorder/big_endian.h
-3ddb79c1qFXOEX1eD0yXJ_gsGkUt8w xen/include/xeno/byteorder/generic.h
-3ddb79c1VbwFALNpgx6uC_iZKFHD-A xen/include/xeno/byteorder/little_endian.h
-3ddb79c1VvNRMM35bpdZMekirCXP-A xen/include/xeno/byteorder/pdp_endian.h
-3ddb79c116WbJV8bwGZXFFJy_GNNvw xen/include/xeno/byteorder/swab.h
-3ddb79c1pwmlw8VXW8aaSKAVGVmjDA xen/include/xeno/byteorder/swabb.h
-3ddb79c0c0cX_DZE209-Bb-Rx1v-Aw xen/include/xeno/cache.h
-3e9c248aEG_nCngztiFmv5CfayNkcA xen/include/xeno/cdrom.h
-3f840f12CkbYSlwMrY2S11Mpyxg7Nw xen/include/xeno/compiler.h
-3ddb79c259jh8hE7vre_8NuE7nwNSA xen/include/xeno/config.h
-3eb165e0eawr3R-p2ZQtSdLWtLRN_A xen/include/xeno/console.h
-3f0c428eIwGr7n9fj4FkBdX2YvA_Rw xen/include/xeno/crc32.h
-3ddb79c1V44RD26YqCUm-kqIupM37A xen/include/xeno/ctype.h
-3ddb79c05DdHQ0UxX_jKsXdR4QlMCA xen/include/xeno/delay.h
-3ddb79c1uaWQZj551j1O0B5z8AnHOg xen/include/xeno/elevator.h
-3ddb79c0HIghfBF8zFUdmXhOU8i6hA xen/include/xeno/errno.h
-3ddb79c0rMjudDKkJku_mkm0J-BZgw xen/include/xeno/etherdevice.h
-3ddb79c0T3X07lFnM9OSE-W5bqIDSQ xen/include/xeno/ethtool.h
-3ddb79c1W0lQca8gRV7sN6j3iY4Luw xen/include/xeno/event.h
-3ddb79c1J4I_AjNflZL-1c1jOIlSyg xen/include/xeno/genhd.h
-3ddb79c1i-chIoeniqgYwMM3EgaR5w xen/include/xeno/hdreg.h
-3ddb79c12GuUuaxBKiMuwf-Qvuwpng xen/include/xeno/hdsmart.h
-3ddb79c0MM575N4YvMSiw9EqKH4JDA xen/include/xeno/ide.h
-3ddb79c1yHLp08JhgPxIMcZ8DwN9hg xen/include/xeno/if.h
-3ddb79c1RCWOkWPQRzbYVTX_e-E7CA xen/include/xeno/if_ether.h
-3ddb79c2IYah7z7hkzPyOiG8szKkyw xen/include/xeno/if_packet.h
-3e4540ccefnCkeqtD_dW_CBOjXUSYw xen/include/xeno/if_vlan.h
-3df0af1c-QrOEqpPHq4uL3NZzCeJCg xen/include/xeno/in.h
-3ddb79c0GurNF9tDWqQbAwJFH8ugfA xen/include/xeno/init.h
-3ddb79c1Vi5VleJAOKHAlY0G2zAsgw xen/include/xeno/interrupt.h
-3ddb79c2J6EnruiygRhBCgftzMzTeQ xen/include/xeno/ioctl.h
-3ddb79c1nzaWu8NoF4xCCMSFJR4MlA xen/include/xeno/ioport.h
-3ddb79c2qAxCOABlkKtD8Txohe-qEw xen/include/xeno/irq.h
-3ddb79c2b3qe-6Ann09FqZBF4IrJaQ xen/include/xeno/irq_cpustat.h
-3ddb79c11w_O7z7YZJnzuDSxaK5LlA xen/include/xeno/kdev_t.h
-3e4540ccPHqIIv2pvnQ1gV8LUnoHIg xen/include/xeno/kernel.h
-3e4cd9d8elj_7EgAs9Of56RQ2Yq_4g xen/include/xeno/keyhandler.h
-3ddb79c1NfYlOrWNqgZkj9EwtFfJow xen/include/xeno/lib.h
-3ddb79c18Ajy7micDGQQfJ0zWgEHtA xen/include/xeno/list.h
-3ddb79c0_s2_wgV0cA6tztEaeyy1NA xen/include/xeno/major.h
-3ddb79c1fsWuKI2sGlW5bqoG2lPVNA xen/include/xeno/mii.h
-3ddb79c1gs2VbLbQlw0dcDUXYIepDA xen/include/xeno/mm.h
-3ddb79c13p9iHn1XAp0IS1qvj4yDsg xen/include/xeno/module.h
-3ddb79c1ieLZfGSFwfvvSQ2NK1BMSg xen/include/xeno/multiboot.h
-3ec92e46saEJq7v1vgEJD3HZSufSBg xen/include/xeno/net_headers.h
-3ddb79c0CLfAlJLg1ohdPD-Jjn-jxg xen/include/xeno/netdevice.h
-3e4540ccaugeWGdOuphJKj6WFw1jkw xen/include/xeno/notifier.h
-3ddb79c2Fg44_PBPVxHSC0gTOMq4Ow xen/include/xeno/pci.h
-3ddb79c0MOVXq8qZDQRGb6z64_xAwg xen/include/xeno/pci_ids.h
-3e54c38dlSCVdyVM4PKcrSfzLLxWUQ xen/include/xeno/perfc.h
-3e54c38de9SUSYSAwxDf_DwkpAnQFA xen/include/xeno/perfc_defn.h
-3ddb79c04nQVR3EYM5L4zxDV_MCo1g xen/include/xeno/prefetch.h
-4006e65fWMwLqcocgik6wbF0Eeh0Og xen/include/xeno/rbtree.h
-3e4540ccU1sgCx8seIMGlahmMfv7yQ xen/include/xeno/reboot.h
-40589969nPq3DMzv24RDb5LXE9brHw xen/include/xeno/sched-if.h
-3ddb79c0LzqqS0LhAQ50ekgj4oGl7Q xen/include/xeno/sched.h
-403a06a7H0hpHcKpAiDe5BPnaXWTlA xen/include/xeno/serial.h
-3ddb79c0VDeD-Oft5eNfMneTU3D1dQ xen/include/xeno/skbuff.h
-3ddb79c14dXIhP7C2ahnoD08K90G_w xen/include/xeno/slab.h
-3ddb79c09xbS-xxfKxuV3JETIhBzmg xen/include/xeno/smp.h
-3ddb79c1-yIt89RT02wIPp2xDR8YjQ xen/include/xeno/socket.h
-3ddb79c2V2P9F2xMCzDJ9vbUofSg_Q xen/include/xeno/sockios.h
-3ddb79c2iIcESrDAB8samy_yAh6olQ xen/include/xeno/spinlock.h
-3e7f358aMtFMUVvN_Zjg5qvEJIqEBA xen/include/xeno/string.h
-3ddb79c0BnA20PbgmuMPSGIBljNRQw xen/include/xeno/time.h
-3ddb79c2HFkXuRxi1CriJtSFmY6Ybw xen/include/xeno/timer.h
-3ddb79c2_m8lT9jDKse_tePj7zcnNQ xen/include/xeno/timex.h
-3ddb79c2e2C14HkndNEJlYwXaPrF5A xen/include/xeno/tqueue.h
-403a3edbG9K5uZjuY19_LORbQGmFbA xen/include/xeno/trace.h
-3ddb79c1-kVvF8cVa0k3ZHDdBMj01Q xen/include/xeno/types.h
-3f055a3dwldYR102YcSuBaxIf9t3Jw xen/include/xeno/vbd.h
-3e8827bdaqPeZAWGVOwswgY9bWSx4g xen/include/xeno/version.h
-3ddb79c2Ae5KpzhC9LCYG7mP_Vi4Aw xen/include/xeno/vif.h
+3e397e66m2tO3s-J8Jnr7Ws_tGoPTg xen/include/xen/ac_timer.h
+3ddb79c0nTsjSpVK4ZVTI9WwN24xtQ xen/include/xen/blk.h
+3ddb79c0dVhTHLsv6CPTf4baKix4mA xen/include/xen/blkdev.h
+3ddb79c18ePBgitnOs7GiOCFilODVw xen/include/xen/blkpg.h
+3ddb79c1oOjpQbp68MW7yiUpoi-S-w xen/include/xen/brlock.h
+3ddb79c1x7Ie3kifu7dQRx8y7HVyvA xen/include/xen/byteorder/big_endian.h
+3ddb79c1qFXOEX1eD0yXJ_gsGkUt8w xen/include/xen/byteorder/generic.h
+3ddb79c1VbwFALNpgx6uC_iZKFHD-A xen/include/xen/byteorder/little_endian.h
+3ddb79c1VvNRMM35bpdZMekirCXP-A xen/include/xen/byteorder/pdp_endian.h
+3ddb79c116WbJV8bwGZXFFJy_GNNvw xen/include/xen/byteorder/swab.h
+3ddb79c1pwmlw8VXW8aaSKAVGVmjDA xen/include/xen/byteorder/swabb.h
+3ddb79c0c0cX_DZE209-Bb-Rx1v-Aw xen/include/xen/cache.h
+3e9c248aEG_nCngztiFmv5CfayNkcA xen/include/xen/cdrom.h
+3f840f12CkbYSlwMrY2S11Mpyxg7Nw xen/include/xen/compiler.h
+3ddb79c259jh8hE7vre_8NuE7nwNSA xen/include/xen/config.h
+3eb165e0eawr3R-p2ZQtSdLWtLRN_A xen/include/xen/console.h
+3f0c428eIwGr7n9fj4FkBdX2YvA_Rw xen/include/xen/crc32.h
+3ddb79c1V44RD26YqCUm-kqIupM37A xen/include/xen/ctype.h
+3ddb79c05DdHQ0UxX_jKsXdR4QlMCA xen/include/xen/delay.h
+3ddb79c1uaWQZj551j1O0B5z8AnHOg xen/include/xen/elevator.h
+3ddb79c0HIghfBF8zFUdmXhOU8i6hA xen/include/xen/errno.h
+3ddb79c0rMjudDKkJku_mkm0J-BZgw xen/include/xen/etherdevice.h
+3ddb79c0T3X07lFnM9OSE-W5bqIDSQ xen/include/xen/ethtool.h
+3ddb79c1W0lQca8gRV7sN6j3iY4Luw xen/include/xen/event.h
+3ddb79c1J4I_AjNflZL-1c1jOIlSyg xen/include/xen/genhd.h
+3ddb79c1i-chIoeniqgYwMM3EgaR5w xen/include/xen/hdreg.h
+3ddb79c12GuUuaxBKiMuwf-Qvuwpng xen/include/xen/hdsmart.h
+3ddb79c0MM575N4YvMSiw9EqKH4JDA xen/include/xen/ide.h
+3ddb79c1yHLp08JhgPxIMcZ8DwN9hg xen/include/xen/if.h
+3ddb79c1RCWOkWPQRzbYVTX_e-E7CA xen/include/xen/if_ether.h
+3ddb79c2IYah7z7hkzPyOiG8szKkyw xen/include/xen/if_packet.h
+3e4540ccefnCkeqtD_dW_CBOjXUSYw xen/include/xen/if_vlan.h
+3df0af1c-QrOEqpPHq4uL3NZzCeJCg xen/include/xen/in.h
+3ddb79c0GurNF9tDWqQbAwJFH8ugfA xen/include/xen/init.h
+3ddb79c1Vi5VleJAOKHAlY0G2zAsgw xen/include/xen/interrupt.h
+3ddb79c2J6EnruiygRhBCgftzMzTeQ xen/include/xen/ioctl.h
+3ddb79c1nzaWu8NoF4xCCMSFJR4MlA xen/include/xen/ioport.h
+3ddb79c2qAxCOABlkKtD8Txohe-qEw xen/include/xen/irq.h
+3ddb79c2b3qe-6Ann09FqZBF4IrJaQ xen/include/xen/irq_cpustat.h
+3ddb79c11w_O7z7YZJnzuDSxaK5LlA xen/include/xen/kdev_t.h
+3e4540ccPHqIIv2pvnQ1gV8LUnoHIg xen/include/xen/kernel.h
+3e4cd9d8elj_7EgAs9Of56RQ2Yq_4g xen/include/xen/keyhandler.h
+3ddb79c1NfYlOrWNqgZkj9EwtFfJow xen/include/xen/lib.h
+3ddb79c18Ajy7micDGQQfJ0zWgEHtA xen/include/xen/list.h
+3ddb79c0_s2_wgV0cA6tztEaeyy1NA xen/include/xen/major.h
+3ddb79c1fsWuKI2sGlW5bqoG2lPVNA xen/include/xen/mii.h
+3ddb79c1gs2VbLbQlw0dcDUXYIepDA xen/include/xen/mm.h
+3ddb79c13p9iHn1XAp0IS1qvj4yDsg xen/include/xen/module.h
+3ddb79c1ieLZfGSFwfvvSQ2NK1BMSg xen/include/xen/multiboot.h
+3ec92e46saEJq7v1vgEJD3HZSufSBg xen/include/xen/net_headers.h
+3ddb79c0CLfAlJLg1ohdPD-Jjn-jxg xen/include/xen/netdevice.h
+3e4540ccaugeWGdOuphJKj6WFw1jkw xen/include/xen/notifier.h
+3ddb79c2Fg44_PBPVxHSC0gTOMq4Ow xen/include/xen/pci.h
+3ddb79c0MOVXq8qZDQRGb6z64_xAwg xen/include/xen/pci_ids.h
+3e54c38dlSCVdyVM4PKcrSfzLLxWUQ xen/include/xen/perfc.h
+3e54c38de9SUSYSAwxDf_DwkpAnQFA xen/include/xen/perfc_defn.h
+3ddb79c04nQVR3EYM5L4zxDV_MCo1g xen/include/xen/prefetch.h
+4006e65fWMwLqcocgik6wbF0Eeh0Og xen/include/xen/rbtree.h
+3e4540ccU1sgCx8seIMGlahmMfv7yQ xen/include/xen/reboot.h
+40589969nPq3DMzv24RDb5LXE9brHw xen/include/xen/sched-if.h
+3ddb79c0LzqqS0LhAQ50ekgj4oGl7Q xen/include/xen/sched.h
+403a06a7H0hpHcKpAiDe5BPnaXWTlA xen/include/xen/serial.h
+3ddb79c0VDeD-Oft5eNfMneTU3D1dQ xen/include/xen/skbuff.h
+3ddb79c14dXIhP7C2ahnoD08K90G_w xen/include/xen/slab.h
+3ddb79c09xbS-xxfKxuV3JETIhBzmg xen/include/xen/smp.h
+3ddb79c1-yIt89RT02wIPp2xDR8YjQ xen/include/xen/socket.h
+3ddb79c2V2P9F2xMCzDJ9vbUofSg_Q xen/include/xen/sockios.h
+3ddb79c2iIcESrDAB8samy_yAh6olQ xen/include/xen/spinlock.h
+3e7f358aMtFMUVvN_Zjg5qvEJIqEBA xen/include/xen/string.h
+3ddb79c0BnA20PbgmuMPSGIBljNRQw xen/include/xen/time.h
+3ddb79c2HFkXuRxi1CriJtSFmY6Ybw xen/include/xen/timer.h
+3ddb79c2_m8lT9jDKse_tePj7zcnNQ xen/include/xen/timex.h
+3ddb79c2e2C14HkndNEJlYwXaPrF5A xen/include/xen/tqueue.h
+403a3edbG9K5uZjuY19_LORbQGmFbA xen/include/xen/trace.h
+3ddb79c1-kVvF8cVa0k3ZHDdBMj01Q xen/include/xen/types.h
+3f055a3dwldYR102YcSuBaxIf9t3Jw xen/include/xen/vbd.h
+3e8827bdaqPeZAWGVOwswgY9bWSx4g xen/include/xen/version.h
+3ddb79c2Ae5KpzhC9LCYG7mP_Vi4Aw xen/include/xen/vif.h
 3ddb79c4YQCQ6r0xNLLu0jfbM7pVmA xen/net/Makefile
 3ddb79c4AkfDkTCw0comx4L8wsUOMg xen/net/dev.c
 3ddb79c4x1L_soh8b-r_1jQW_37Icw xen/net/dev_mcast.c
index 7c45e58ea7d958f1e9b07c8f3a28d2544ed81ecb..65b199bec34e53a151054bde001f8096fb37cd94 100644 (file)
@@ -21,7 +21,7 @@ xen/drivers/pci/devlist.h
 xen/drivers/pci/gen-devlist
 xen/include/asm
 xen/include/hypervisor-ifs/arch
-xen/include/xeno/compile.h
+xen/include/xen/compile.h
 xen/tools/elf-reloc
 xen/tools/figlet/figlet
 TAGS
index 10c5562a2f6c2b3415ea9b6b2f37ac3384ee442f..e887dd2235af9ec3b20827c4f27e3dc1068aa6fb 100644 (file)
@@ -9,7 +9,7 @@ export BASEDIR          := $(shell pwd)
 
 include Rules.mk
 
-GENERATED_FILES := include/xeno/compile.h
+GENERATED_FILES := include/xen/compile.h
 
 default: $(TARGET)
        gzip -f -9 < $(TARGET) > $(TARGET).gz
@@ -49,7 +49,7 @@ delete-unfresh-files:
        rm -f $(GENERATED_FILES) common/kernel.o
 
 # compile.h contains dynamic build info. Rebuilt on every 'make' invocation.
-include/xeno/compile.h:
+include/xen/compile.h:
        @LANG=C echo /\* Autogenerated by root Makefile. Do not edit. \*/ > $@
        @LANG=C echo >> $@
        @LANG=C echo \#define XEN_COMPILE_DATE \"`date`\" >> $@
index c96281116d9c463a0a1b84077b3e9560d490240b..bd6936566da361b9e1a42c1bc656132e6dd78a5b 100644 (file)
@@ -2,12 +2,12 @@ COMPILE_ARCH := $(shell uname -m | sed -e s/i.86/i386/)
 TARGET_ARCH  ?= $(COMPILE_ARCH)
 
 TARGET  := $(BASEDIR)/xen
-HDRS    := $(wildcard $(BASEDIR)/include/xeno/*.h)
+HDRS    := $(wildcard $(BASEDIR)/include/xen/*.h)
 HDRS    += $(wildcard $(BASEDIR)/include/scsi/*.h)
 HDRS    += $(wildcard $(BASEDIR)/include/hypervisor-ifs/*.h)
 HDRS    += $(wildcard $(BASEDIR)/include/asm-$(TARGET_ARCH)/*.h)
 # compile.h is always regenerated, but other files shouldn't be rebuilt
-HDRS    := $(subst $(BASEDIR)/include/xeno/compile.h,,$(HDRS))
+HDRS    := $(subst $(BASEDIR)/include/xen/compile.h,,$(HDRS))
 
 C_SRCS  := $(wildcard *.c)
 S_SRCS  := $(wildcard *.S)
index 4663c7f0624e04b9c1f7c3818197a5947d1aa3f7..b11c54d44726b3ff544581cd6e719eea29e4578e 100644 (file)
@@ -15,6 +15,6 @@ CFLAGS  += -Wno-pointer-arith -Wredundant-decls -m32
 TARGET_CPU := i686
 CFLAGS += -march=$(TARGET_CPU)
 LDARCHFLAGS := --oformat elf32-i386 
-LDFLAGS := -T xeno.lds -N 
+LDFLAGS := -T xen.lds -N 
 
 
index 304f0e3a63cb572c681db302c9eb7cadfa084db3..1d52871a32c71934b543026756ad6651ae05942b 100644 (file)
  *
  * $Id: acpitable.c,v 1.7 2001/11/04 12:21:18 fenrus Exp $
  */
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/slab.h>
-#include <xeno/pci.h>
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/slab.h>
+#include <xen/pci.h>
 #include <asm/mpspec.h>
 #include <asm/io.h>
 #include <asm/apic.h>
index e622cc410435f9e8c2a32b75d70a8f25efb101f7..d09f1922f2cd53432241eedbcaf685c0a64be317 100644 (file)
  */
 
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/sched.h>
-#include <xeno/irq.h>
-#include <xeno/delay.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/sched.h>
+#include <xen/irq.h>
+#include <xen/delay.h>
 #include <asm/mc146818rtc.h>
 #include <asm/msr.h>
-#include <xeno/errno.h>
+#include <xen/errno.h>
 #include <asm/atomic.h>
-#include <xeno/smp.h>
-#include <xeno/interrupt.h>
+#include <xen/smp.h>
+#include <xen/interrupt.h>
 #include <asm/mpspec.h>
 #include <asm/pgalloc.h>
 #include <asm/hardirq.h>
 #include <asm/apic.h>
-#include <xeno/mm.h>
+#include <xen/mm.h>
 #include <asm/io_apic.h>
 #include <asm/timex.h>
-#include <xeno/ac_timer.h>
-#include <xeno/perfc.h>
+#include <xen/ac_timer.h>
+#include <xen/perfc.h>
 
 #undef APIC_TIME_TRACE
 #ifdef APIC_TIME_TRACE
index 4d9204ce45047952389eb21c98b893444207a51c..ebb74c6562fdb8f62fedda33be382a86fb43c543 100644 (file)
@@ -1,4 +1,4 @@
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <hypervisor-ifs/hypervisor-if.h>
 #include <asm/page.h>
 
index 078ff773445afd014841ff56a16fde1e9eef230b..cde5e18b5ff2d67a855d63b3d070d405c18f72a1 100644 (file)
@@ -10,8 +10,8 @@
  *     we have to worry about.
  */
 
-#include <xeno/config.h>
-#include <xeno/delay.h>
+#include <xen/config.h>
+#include <xen/delay.h>
 #include <asm/msr.h>
 #include <asm/processor.h>
 
index 5e5974562a6f9bdf0dcf408f8e863c0c6ac93ce3..69c61661117482ae1437585d25102ec39bd3e4ed 100644 (file)
  * Copyright (C) 1999 Ingo Molnar <mingo@redhat.com>
  */
 
-#include <xeno/config.h>
-#include <xeno/sched.h>
-#include <xeno/mm.h>
-#include <xeno/perfc.h>
+#include <xen/config.h>
+#include <xen/sched.h>
+#include <xen/mm.h>
+#include <xen/perfc.h>
 #include <asm/domain_page.h>
 #include <asm/pgalloc.h>
 
index 08a44af9976c1ebb0310eb6c064addb4bdd462d9..0f0a82612872408eb6d6b07a35caaa82cf168e36 100644 (file)
@@ -79,8 +79,8 @@
  * handler in good order (absolutely no faults allowed!).
  */
 
-#include <xeno/config.h>
-#include <xeno/errno.h>
+#include <xen/config.h>
+#include <xen/errno.h>
 #include <hypervisor-ifs/hypervisor-if.h>
 
 EBX            = 0x00
index de65ff5f0d746ea42c46b46b12a60a7b11d5ffb4..af37b8601388c1dc3888fb6120a73eb477cc301f 100644 (file)
@@ -2,9 +2,9 @@
  * linux/arch/i386/mm/extable.c
  */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/spinlock.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/spinlock.h>
 #include <asm/uaccess.h>
 
 extern const struct exception_table_entry __start___ex_table[];
index fc543ebce72f27b1af9d208d94b76c1db47bf6c6..f247ccd4e8e75ee26353d091335fa0387fa67758 100644 (file)
@@ -7,8 +7,8 @@
  * Copyright (c) 2003, K A Fraser
  */
 
-#include <xeno/config.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/sched.h>
 #include <asm/flushtlb.h>
 
 unsigned long tlbflush_mask;
index ac38ab511f9bc4eb20c0eb54628e911ed8f14e8d..34cd1c9b3b1ffc6dce9ebe048974f6b9ec978e8a 100644 (file)
@@ -8,8 +8,8 @@
  *     Gareth Hughes <gareth@valinux.com>, May 2000
  */
 
-#include <xeno/config.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/sched.h>
 #include <asm/processor.h>
 #include <asm/i387.h>
 
index 53d83e75fea37219cdde22b1b9ad42bc87410b09..58ecb12553352e2a8d0979f264803a5d358eeb44 100644 (file)
@@ -5,20 +5,20 @@
  * tables for IO APICS as well as uniprocessor 8259-alikes.
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/init.h>
 #include <asm/ptrace.h>
-#include <xeno/errno.h>
-#include <xeno/sched.h>
-#include <xeno/interrupt.h>
-#include <xeno/irq.h>
+#include <xen/errno.h>
+#include <xen/sched.h>
+#include <xen/interrupt.h>
+#include <xen/irq.h>
 
 #include <asm/atomic.h>
 #include <asm/system.h>
 #include <asm/io.h>
 #include <asm/desc.h>
 #include <asm/bitops.h>
-#include <xeno/delay.h>
+#include <xen/delay.h>
 #include <asm/apic.h>
 
 
index a4c3f0d5c90705d0409d121d83e53362e953119b..b956fdff40b48f28ab5f6512ebc1759399a99049 100644 (file)
@@ -1,5 +1,5 @@
-#include <xeno/config.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/sched.h>
 #include <asm/desc.h>
 
 struct task_struct idle0_task = IDLE0_TASK(idle0_task);
index 8401a1612a552fa7808f6555b167d9656cd49718..c4a2e4853549bd889d15e77fe6e8d311010d69f2 100644 (file)
  *                                     for testing these extensively
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/interrupt.h>
-#include <xeno/irq.h>
-#include <xeno/delay.h>
-#include <xeno/sched.h>
-#include <xeno/config.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/interrupt.h>
+#include <xen/irq.h>
+#include <xen/delay.h>
+#include <xen/sched.h>
+#include <xen/config.h>
 #include <asm/mc146818rtc.h>
 #include <asm/io.h>
 #include <asm/mpspec.h>
index c650d0b5d8f9010087ec0f0c239cb2514519fa2d..a0a0f69988c06f77857ef01ae54d9c60caa66401 100644 (file)
@@ -8,9 +8,9 @@
  * (C) Copyright 1995 1996 Linus Torvalds
  */
 
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/mm.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
 #include <asm/io.h>
 #include <asm/pgalloc.h>
 #include <asm/page.h>
index cd1bcc6b3c1b584e64d2b2063d5744395cd81f64..6b45b02080cf8d9c5f8d04476e343d4deef4cd72 100644 (file)
  * Naturally it's not a 1:1 relation, but there are similarities.
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/errno.h>
-#include <xeno/sched.h>
-#include <xeno/interrupt.h>
-#include <xeno/irq.h>
-#include <xeno/slab.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/errno.h>
+#include <xen/sched.h>
+#include <xen/interrupt.h>
+#include <xen/irq.h>
+#include <xen/slab.h>
 #include <asm/mpspec.h>
 #include <asm/io_apic.h>
 #include <asm/msr.h>
@@ -35,9 +35,9 @@
 #include <asm/system.h>
 #include <asm/bitops.h>
 #include <asm/pgalloc.h>
-#include <xeno/delay.h>
-#include <xeno/timex.h>
-#include <xeno/perfc.h>
+#include <xen/delay.h>
+#include <xen/timex.h>
+#include <xen/perfc.h>
 
 /*
  * Linux has a controller-independent x86 interrupt architecture.
index e892c61953b8ef698ad01cc1b8c3dead23ebbdaf..2567e394223258236e4a725c2602edf69b24cf69 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/init.h>
-#include <xeno/mm.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/init.h>
+#include <xen/mm.h>
 #include <asm/page.h>
 #include <asm/pgalloc.h>
 #include <asm/fixmap.h>
index c0776a7387d358d79ffb5280a034a1b1185c44c2..28892fed29a83ea41949d90d444081fe66b75666 100644 (file)
  *     Maciej W. Rozycki       :       Bits for default MP configurations
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/lib.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/lib.h>
 #include <asm/io.h>
-#include <xeno/irq.h>
-#include <xeno/smp.h>
+#include <xen/irq.h>
+#include <xen/smp.h>
 #include <asm/apic.h>
 #include <asm/mpspec.h>
 #include <asm/pgalloc.h>
 #include <asm/smpboot.h>
-#include <xeno/kernel.h>
+#include <xen/kernel.h>
 
 int numnodes = 1; /* XXX Xen */
 
index 015a627074036aa849ea22f73f1b778e1fb72ac8..8422367492e59d8b4bebda624b77c40152952186 100644 (file)
  *  Keir Fraser         : Pentium 4 Hyperthreading support
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/lib.h>
-#include <xeno/mm.h>
-#include <xeno/irq.h>
-#include <xeno/delay.h>
-#include <xeno/interrupt.h>
-#include <xeno/time.h>
-#include <xeno/timex.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
+#include <xen/irq.h>
+#include <xen/delay.h>
+#include <xen/interrupt.h>
+#include <xen/time.h>
+#include <xen/timex.h>
+#include <xen/sched.h>
 
 #include <asm/mc146818rtc.h>
 #include <asm/smp.h>
index 8bd184e18b53f8849b4f4823eaebbb0106ec5654..dd088fa1dfd3bdb153c2edf851d1495b4197a830 100644 (file)
@@ -7,10 +7,10 @@
  * in asm/pci.h.
  */
 
-#include <xeno/types.h>
-#include <xeno/mm.h>
-#include <xeno/lib.h>
-#include <xeno/pci.h>
+#include <xen/types.h>
+#include <xen/mm.h>
+#include <xen/lib.h>
+#include <xen/pci.h>
 #include <asm/io.h>
 
 void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
index 55074f2cf27a5bf5571f2bde5dab168f40212d86..5b0d6a0b9ec5f72ccf1fdbd3f807b6744c29f3cb 100644 (file)
  * Oct  8, 1999 : Split to pci-i386.c, pci-pc.c and pci-visws.c. [mj]
  */
 
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/pci.h>
-#include <xeno/init.h>
-#include <xeno/ioport.h>
-#include <xeno/errno.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/pci.h>
+#include <xen/init.h>
+#include <xen/ioport.h>
+#include <xen/errno.h>
 
 #include "pci-i386.h"
 
index bc3df821f3917ce584a11d4b3acd06a95b8c953d..a907125f75542e83ab4d9800d50b248c4e350379 100644 (file)
@@ -4,14 +4,14 @@
  *     (c) 1999--2000 Martin Mares <mj@ucw.cz>
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/pci.h>
-#include <xeno/init.h>
-#include <xeno/slab.h>
-#include <xeno/interrupt.h>
-#include <xeno/irq.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/pci.h>
+#include <xen/init.h>
+#include <xen/slab.h>
+#include <xen/interrupt.h>
+#include <xen/irq.h>
+#include <xen/sched.h>
 #include <asm/io.h>
 #include <asm/smp.h>
 #include <asm/mpspec.h>
index eb8e19913ec975216319e74f831329f956dc7725..eae7521c3603185a50605510fac935b271083c7b 100644 (file)
@@ -4,13 +4,13 @@
  *     (c) 1999--2000 Martin Mares <mj@ucw.cz>
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-/*#include <xeno/kernel.h>*/
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/init.h>
-#include <xeno/ioport.h>
+#include <xen/config.h>
+#include <xen/types.h>
+/*#include <xen/kernel.h>*/
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/init.h>
+#include <xen/ioport.h>
 
 /*#include <asm/segment.h>*/
 #include <asm/io.h>
index 3184c7e62990e5090738e70a38d67512bbdea9ca..0b0217d47cc6c3f49563aa6c7bd456cf10a03e84 100644 (file)
@@ -1,11 +1,11 @@
-#include <xeno/lib.h>
-#include <xeno/sched.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
 #include <asm-i386/ptrace.h>
-#include <xeno/keyhandler.h> 
+#include <xen/keyhandler.h> 
 #include <asm/apic.h>
 #include <asm/pdb.h>
-#include <xeno/list.h>
-#include <xeno/serial.h>
+#include <xen/list.h>
+#include <xen/serial.h>
 
 #define BUFMAX 400
 
index bcbc5f550af2abebf7c3a64dc0799dba68107887..939acddc136c61c6b38af88f1ebd13371138af1d 100644 (file)
  */
 
 #define __KERNEL_SYSCALLS__
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/errno.h>
-#include <xeno/sched.h>
-#include <xeno/smp.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/errno.h>
+#include <xen/sched.h>
+#include <xen/smp.h>
 #include <asm/ptrace.h>
-#include <xeno/delay.h>
-#include <xeno/interrupt.h>
+#include <xen/delay.h>
+#include <xen/interrupt.h>
 #include <asm/mc146818rtc.h>
 
 #include <asm/system.h>
@@ -30,8 +30,8 @@
 #include <asm/mpspec.h>
 #include <asm/ldt.h>
 
-#include <xeno/irq.h>
-#include <xeno/event.h>
+#include <xen/irq.h>
+#include <xen/event.h>
 
 int hlt_counter;
 
index aaf4fbea59eacc3fd07a76fc3c8fa298cc0d9c68..06271e3b460d916121bc8d1a6868c0eb5f25c4fd 100644 (file)
@@ -1,11 +1,11 @@
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/interrupt.h>
-#include <xeno/lib.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/serial.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/interrupt.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/serial.h>
 #include <asm/bitops.h>
 #include <asm/smp.h>
 #include <asm/processor.h>
@@ -14,7 +14,7 @@
 #include <asm/desc.h>
 #include <asm/domain_page.h>
 #include <asm/pdb.h>
-#include <xeno/trace.h>
+#include <xen/trace.h>
 
 struct cpuinfo_x86 boot_cpu_data = { 0 };
 /* Lots of nice things, since we only target PPro+. */
@@ -404,7 +404,7 @@ void __init start_of_day(void)
     }
 
     ac_timer_init();    /* init accurate timers */
-    init_xeno_time();  /* initialise the time */
+    init_xen_time();   /* initialise the time */
     schedulers_start(); /* start scheduler for each CPU */
 
     sti();
index f60a42dd0cb64b1f9a718408c0a9843e1dcbd962..e61b58b9071dadd6feecbbb032863010cb01c92c 100644 (file)
@@ -8,10 +8,10 @@
  *     later.
  */
 
-#include <xeno/irq.h>
-#include <xeno/sched.h>
-#include <xeno/delay.h>
-#include <xeno/spinlock.h>
+#include <xen/irq.h>
+#include <xen/sched.h>
+#include <xen/delay.h>
+#include <xen/spinlock.h>
 #include <asm/smp.h>
 #include <asm/mc146818rtc.h>
 #include <asm/pgalloc.h>
index dcfe8313d320dc5bee823b91d74fed98283b1d9e..e91f95d73f8bb5314295718b2adebf54ee1c496b 100644 (file)
  *             Martin J. Bligh :       Added support for multi-quad systems
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/interrupt.h>
-#include <xeno/irq.h>
-#include <xeno/mm.h>
-#include <xeno/slab.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/interrupt.h>
+#include <xen/irq.h>
+#include <xen/mm.h>
+#include <xen/slab.h>
 #include <asm/pgalloc.h>
 #include <asm/mc146818rtc.h>
 #include <asm/smpboot.h>
-#include <xeno/smp.h>
+#include <xen/smp.h>
 #include <asm/msr.h>
 #include <asm/system.h>
 #include <asm/mpspec.h>
 #include <asm/io_apic.h>
-#include <xeno/sched.h>
-#include <xeno/delay.h>
-#include <xeno/lib.h>
+#include <xen/sched.h>
+#include <xen/delay.h>
+#include <xen/lib.h>
 
 #ifdef CONFIG_SMP
 
index 62763262476b3fb46ea4eaf44bdff2a16f78557f..9cd6da1955ec701bbd51d0cc519893dc4d4e8ab7 100644 (file)
  *  Copyright (C) 1991, 1992, 1995  Linus Torvalds
  */
 
-#include <xeno/errno.h>
-#include <xeno/sched.h>
-#include <xeno/lib.h>
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/interrupt.h>
-#include <xeno/time.h>
-#include <xeno/ac_timer.h>
+#include <xen/errno.h>
+#include <xen/sched.h>
+#include <xen/lib.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/interrupt.h>
+#include <xen/time.h>
+#include <xen/ac_timer.h>
 
 #include <asm/io.h>
-#include <xeno/smp.h>
-#include <xeno/irq.h>
+#include <xen/smp.h>
+#include <xen/irq.h>
 #include <asm/msr.h>
 #include <asm/mpspec.h>
 #include <asm/processor.h>
@@ -329,7 +329,7 @@ void do_settime(unsigned long secs, unsigned long usecs, u64 system_time_base)
 
 
 /* Late init function (after all CPUs are booted). */
-int __init init_xeno_time()
+int __init init_xen_time()
 {
     u64      scale;
     u64      full_tsc;
index 9fdea7d6791aa578bcd61a22dcc2b00bf73c906d..d9a1cb68889051334de1630ae6280ceec0eca42a 100644 (file)
@@ -15,7 +15,7 @@
  *     (no relocation) and are taken with regard to r_base.
  */
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <hypervisor-ifs/hypervisor-if.h>
 #include <asm/page.h>
 
index f71ce60d570317a1188f5a3c0e1cb15d5c4dc7da..205827e09873e4a739641a1c974ba68edb18b04f 100644 (file)
  *     Gareth Hughes <gareth@valinux.com>, May 2000
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/interrupt.h>
-#include <xeno/sched.h>
-#include <xeno/lib.h>
-#include <xeno/errno.h>
-#include <xeno/mm.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/interrupt.h>
+#include <xen/sched.h>
+#include <xen/lib.h>
+#include <xen/errno.h>
+#include <xen/mm.h>
 #include <asm/ptrace.h>
-#include <xeno/delay.h>
-#include <xeno/spinlock.h>
-#include <xeno/irq.h>
-#include <xeno/perfc.h>
+#include <xen/delay.h>
+#include <xen/spinlock.h>
+#include <xen/irq.h>
+#include <xen/perfc.h>
 #include <asm/domain_page.h>
 #include <asm/system.h>
 #include <asm/io.h>
index 0f3e08e9dbb7f7f7b63032c0eda50504f606a846..dc2d34cb906344a3c6867d732f8aedbf0a4b3af8 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright 1997 Andi Kleen <ak@muc.de>
  * Copyright 1997 Linus Torvalds
  */
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/uaccess.h>
 //#include <asm/mmx.h>
 
diff --git a/xen/arch/i386/xen.lds b/xen/arch/i386/xen.lds
new file mode 100644 (file)
index 0000000..5947eba
--- /dev/null
@@ -0,0 +1,87 @@
+/* ld script to make i386 Linux kernel
+ * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
+ */
+OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
+OUTPUT_ARCH(i386)
+ENTRY(start)
+SECTIONS
+{
+  . = 0xFC400000 + 0x100000;
+  _text = .;                   /* Text and read-only data */
+  .text : {
+       *(.text)
+       *(.fixup)
+       *(.gnu.warning)
+       } = 0x9090
+  .text.lock : { *(.text.lock) }       /* out-of-line lock text */
+
+  _etext = .;                  /* End of text section */
+
+  .rodata : { *(.rodata) *(.rodata.*) }
+  .kstrtab : { *(.kstrtab) }
+
+  . = ALIGN(16);               /* Exception table */
+  __start___ex_table = .;
+  __ex_table : { *(__ex_table) }
+  __stop___ex_table = .;
+
+  __start___ksymtab = .;       /* Kernel symbol table */
+  __ksymtab : { *(__ksymtab) }
+  __stop___ksymtab = .;
+
+  __start___kallsyms = .;      /* All kernel symbols */
+  __kallsyms : { *(__kallsyms) }
+  __stop___kallsyms = .;
+
+  .data : {                    /* Data */
+       *(.data)
+       CONSTRUCTORS
+       }
+
+  _edata = .;                  /* End of data section */
+
+  . = ALIGN(8192);             /* init_task */
+  .data.init_task : { *(.data.init_task) }
+
+  . = ALIGN(4096);             /* Init code and data */
+  __init_begin = .;
+  .text.init : { *(.text.init) }
+  .data.init : { *(.data.init) }
+  . = ALIGN(16);
+  __setup_start = .;
+  .setup.init : { *(.setup.init) }
+  __setup_end = .;
+  __initcall_start = .;
+  .initcall.init : { *(.initcall.init) }
+  __initcall_end = .;
+  . = ALIGN(4096);
+  __init_end = .;
+
+  . = ALIGN(4096);
+  .data.page_aligned : { *(.data.idt) }
+
+  . = ALIGN(32);
+  .data.cacheline_aligned : { *(.data.cacheline_aligned) }
+
+  __bss_start = .;             /* BSS */
+  .bss : {
+       *(.bss)
+       }
+  _end = . ;
+
+  /* Sections to be discarded */
+  /DISCARD/ : {
+       *(.text.exit)
+       *(.data.exit)
+       *(.exitcall.exit)
+       }
+
+  /* Stabs debugging sections.  */
+  .stab 0 : { *(.stab) }
+  .stabstr 0 : { *(.stabstr) }
+  .stab.excl 0 : { *(.stab.excl) }
+  .stab.exclstr 0 : { *(.stab.exclstr) }
+  .stab.index 0 : { *(.stab.index) }
+  .stab.indexstr 0 : { *(.stab.indexstr) }
+  .comment 0 : { *(.comment) }
+}
diff --git a/xen/arch/i386/xeno.lds b/xen/arch/i386/xeno.lds
deleted file mode 100644 (file)
index 5947eba..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/* ld script to make i386 Linux kernel
- * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
- */
-OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
-OUTPUT_ARCH(i386)
-ENTRY(start)
-SECTIONS
-{
-  . = 0xFC400000 + 0x100000;
-  _text = .;                   /* Text and read-only data */
-  .text : {
-       *(.text)
-       *(.fixup)
-       *(.gnu.warning)
-       } = 0x9090
-  .text.lock : { *(.text.lock) }       /* out-of-line lock text */
-
-  _etext = .;                  /* End of text section */
-
-  .rodata : { *(.rodata) *(.rodata.*) }
-  .kstrtab : { *(.kstrtab) }
-
-  . = ALIGN(16);               /* Exception table */
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  __start___ksymtab = .;       /* Kernel symbol table */
-  __ksymtab : { *(__ksymtab) }
-  __stop___ksymtab = .;
-
-  __start___kallsyms = .;      /* All kernel symbols */
-  __kallsyms : { *(__kallsyms) }
-  __stop___kallsyms = .;
-
-  .data : {                    /* Data */
-       *(.data)
-       CONSTRUCTORS
-       }
-
-  _edata = .;                  /* End of data section */
-
-  . = ALIGN(8192);             /* init_task */
-  .data.init_task : { *(.data.init_task) }
-
-  . = ALIGN(4096);             /* Init code and data */
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(16);
-  __setup_start = .;
-  .setup.init : { *(.setup.init) }
-  __setup_end = .;
-  __initcall_start = .;
-  .initcall.init : { *(.initcall.init) }
-  __initcall_end = .;
-  . = ALIGN(4096);
-  __init_end = .;
-
-  . = ALIGN(4096);
-  .data.page_aligned : { *(.data.idt) }
-
-  . = ALIGN(32);
-  .data.cacheline_aligned : { *(.data.cacheline_aligned) }
-
-  __bss_start = .;             /* BSS */
-  .bss : {
-       *(.bss)
-       }
-  _end = . ;
-
-  /* Sections to be discarded */
-  /DISCARD/ : {
-       *(.text.exit)
-       *(.data.exit)
-       *(.exitcall.exit)
-       }
-
-  /* Stabs debugging sections.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment 0 : { *(.comment) }
-}
index dcb1fb14b6d7d25b30f1a187537163c38b0c98c9..ceea6a24791ec35ec8a54bf57f706923a9133078 100644 (file)
@@ -13,6 +13,6 @@ CFLAGS  += -fomit-frame-pointer -I$(BASEDIR)/include -D__KERNEL__ -DNDEBUG
 #CFLAGS  += -fomit-frame-pointer -I$(BASEDIR)/include -D__KERNEL__
 CFLAGS  += -Wno-pointer-arith -Wredundant-decls -m64
 LDARCHFLAGS := 
-LDFLAGS := -T xeno.lds -N 
+LDFLAGS := -T xen.lds -N 
 
 
index 4da998d45de24b5762a434cd1bb3535d3392ac2a..88c8c14daa9265ec65a91d69210fa8ee12ea16b3 100644 (file)
  * Description: Accurate timer for the Hypervisor
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/errno.h>
-#include <xeno/sched.h>
-#include <xeno/lib.h>
-#include <xeno/smp.h>
-#include <xeno/perfc.h>
-#include <xeno/time.h>
-#include <xeno/interrupt.h>
-#include <xeno/ac_timer.h>
-#include <xeno/keyhandler.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/errno.h>
+#include <xen/sched.h>
+#include <xen/lib.h>
+#include <xen/smp.h>
+#include <xen/perfc.h>
+#include <xen/time.h>
+#include <xen/interrupt.h>
+#include <xen/ac_timer.h>
+#include <xen/keyhandler.h>
 #include <asm/system.h>
 #include <asm/desc.h>
 
index f3a74a0c994e5f2a58f0e1764b98e16a548cdff9..5cc7366f9c14fd76d0f1f27a7649f06800addeb7 100644 (file)
@@ -8,12 +8,12 @@
  * Copyright 2000, David S. Miller <davem@redhat.com>
  */
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 #ifdef CONFIG_SMP
 
-#include <xeno/sched.h>
-#include <xeno/brlock.h>
+#include <xen/sched.h>
+#include <xen/brlock.h>
 
 #ifdef __BRLOCK_USE_ATOMICS
 
index c65e588771b125d4b2367ca7a75f46add3545ab8..29875cbae1885ee0a1abd911c644d059a65abffb 100644 (file)
@@ -1,6 +1,6 @@
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
 #include <hypervisor-ifs/dom0_ops.h>
 #include <asm/pdb.h>
 
 #define PIDHASH_SZ (4096 >> 2)
 #define pid_hashfn(x)  ((((x) >> 8) ^ (x)) & (PIDHASH_SZ - 1))
 
-/* from asm-xeno/pgtable-2level.h */
+/* from asm-xen/pgtable-2level.h */
 #define PGDIR_SHIFT    22
 #define PTRS_PER_PGD   1024
 
-/* from asm-xeno/page.h */
+/* from asm-xen/page.h */
 #define PAGE_SHIFT     12
 #define PAGE_SIZE      (1UL << PAGE_SHIFT)
 #define PAGE_MASK      (~(PAGE_SIZE-1))
@@ -31,7 +31,7 @@
 #define L1_PAGE_BITS ( (ENTRIES_PER_L1_PAGETABLE - 1) << PAGE_SHIFT )
 
 
-/* adapted from asm-xeno/page.h */
+/* adapted from asm-xen/page.h */
 static inline unsigned long machine_to_phys(domid_t domain, 
                                             unsigned long machine)
 {
index dff739d99a51a2328f12209e9c9a03966d7018fc..2fcaf26c2eb3f95e07bc86ae3c436fac80629187 100644 (file)
@@ -4,12 +4,12 @@
  * xen pervasive debugger
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
 #include <hypervisor-ifs/dom0_ops.h>
-#include <xeno/sched.h>
-#include <xeno/event.h>
+#include <xen/sched.h>
+#include <xen/event.h>
 #include <asm/page.h>
 #include <asm/domain_page.h>                           /* [un]map_domain_mem */
 #include <asm/pdb.h>
index 8ff3139f800ad0643beeb03dd48a5d29fe32123a..a5f7041f0b402a84934cfaf295faa7923caa5ded 100644 (file)
@@ -6,18 +6,18 @@
  * Copyright (c) 2002, K A Fraser
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/mm.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
 #include <hypervisor-ifs/dom0_ops.h>
-#include <xeno/sched.h>
-#include <xeno/event.h>
+#include <xen/sched.h>
+#include <xen/event.h>
 #include <asm/domain_page.h>
 #include <asm/msr.h>
 #include <asm/pdb.h>
-#include <xeno/trace.h>
-#include <xeno/console.h>
+#include <xen/trace.h>
+#include <xen/console.h>
 #include <hypervisor-ifs/sched_ctl.h>
 
 extern unsigned int alloc_new_dom_mem(struct task_struct *, unsigned int);
index 97b0f784e667279f5b5185a3cae7bf01482dd9ee..7d596026f9385d39f48d8a4eeb6130fb66bfe8b6 100644 (file)
@@ -6,14 +6,14 @@
  * Copyright (c) 2003, B Dragovic & K A Fraser.
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/mm.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
 #include <hypervisor-ifs/dom_mem_ops.h>
-#include <xeno/perfc.h>
-#include <xeno/sched.h>
-#include <xeno/event.h>
+#include <xen/perfc.h>
+#include <xen/sched.h>
+#include <xen/event.h>
 #include <asm/domain_page.h>
 
 static long alloc_dom_mem(struct task_struct *p, reservation_increase_t op)
index 17cfc733baf840983ef4efc067fbe79dac51e095..b601a5ffb718dc35e75365bdc8bf4a634be5a01c 100644 (file)
@@ -1,22 +1,22 @@
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/lib.h>
-#include <xeno/errno.h>
-#include <xeno/sched.h>
-#include <xeno/mm.h>
-#include <xeno/skbuff.h>
-#include <xeno/interrupt.h>
-#include <xeno/delay.h>
-#include <xeno/event.h>
-#include <xeno/time.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/lib.h>
+#include <xen/errno.h>
+#include <xen/sched.h>
+#include <xen/mm.h>
+#include <xen/skbuff.h>
+#include <xen/interrupt.h>
+#include <xen/delay.h>
+#include <xen/event.h>
+#include <xen/time.h>
 #include <hypervisor-ifs/dom0_ops.h>
 #include <asm/io.h>
 #include <asm/domain_page.h>
 #include <asm/flushtlb.h>
 #include <asm/msr.h>
-#include <xeno/blkdev.h>
-#include <xeno/console.h>
-#include <xeno/vbd.h>
+#include <xen/blkdev.h>
+#include <xen/console.h>
+#include <xen/vbd.h>
 #include <asm/i387.h>
 
 #if !defined(CONFIG_X86_64BITMODE)
index f3fe7006f8e24492a42dd52a14935573532c60c8..42e354d212fe35ef9c3a134ed46c366df7484578 100644 (file)
@@ -8,12 +8,12 @@
  * Copyright (c) 2002, K A Fraser
  */
 
-#include <xeno/config.h>
-#include <xeno/event.h>
+#include <xen/config.h>
+#include <xen/event.h>
 
 typedef void (*hyp_event_callback_fn_t)(void);
 
-/* Ordering must match definitions of _HYP_EVENT_* in xeno/sched.h */
+/* Ordering must match definitions of _HYP_EVENT_* in xen/sched.h */
 static hyp_event_callback_fn_t event_call_fn[] = 
 {
     __enter_scheduler,
index 6983649c9e5d6e6950df8210f8a11574b365093e..babd168cb5c3da3f22da72d82ab43bf8ba466b9b 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/lib.h>
-#include <xeno/errno.h>
-#include <xeno/sched.h>
-#include <xeno/event.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/lib.h>
+#include <xen/errno.h>
+#include <xen/sched.h>
+#include <xen/event.h>
 
 #include <hypervisor-ifs/hypervisor-if.h>
 #include <hypervisor-ifs/event_channel.h>
index 5f2f27728fb8ab1301ec472d6417b1d29e43ef56..25e763f7c2f38fd2c5ee9502c500a9e804f38ccb 100644 (file)
@@ -8,29 +8,29 @@
  */
 
 #include <stdarg.h>
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/errno.h>
-#include <xeno/spinlock.h>
-#include <xeno/multiboot.h>
-#include <xeno/sched.h>
-#include <xeno/mm.h>
-#include <xeno/delay.h>
-#include <xeno/skbuff.h>
-#include <xeno/interrupt.h>
-#include <xeno/compile.h>
-#include <xeno/version.h>
-#include <xeno/netdevice.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/errno.h>
+#include <xen/spinlock.h>
+#include <xen/multiboot.h>
+#include <xen/sched.h>
+#include <xen/mm.h>
+#include <xen/delay.h>
+#include <xen/skbuff.h>
+#include <xen/interrupt.h>
+#include <xen/compile.h>
+#include <xen/version.h>
+#include <xen/netdevice.h>
 #include <asm/io.h>
 #include <asm/msr.h>
 #include <asm/uaccess.h>
 #include <hypervisor-ifs/dom0_ops.h>
 #include <asm/byteorder.h>
-#include <xeno/if_ether.h>
+#include <xen/if_ether.h>
 #include <asm/domain_page.h>
-#include <xeno/console.h>
-#include <xeno/net_headers.h>
-#include <xeno/serial.h>
+#include <xen/console.h>
+#include <xen/net_headers.h>
+#include <xen/serial.h>
 
 kmem_cache_t *task_struct_cachep;
 
index 75f1e38c5683d3e80c87f4ea523f63f6c12880f4..69c3ff686b0a2b0932ad2797a6e8736f0dd5c6d3 100644 (file)
@@ -1,9 +1,9 @@
 
-#include <xeno/keyhandler.h> 
-#include <xeno/reboot.h>
-#include <xeno/event.h>
-#include <xeno/console.h>
-#include <xeno/serial.h>
+#include <xen/keyhandler.h> 
+#include <xen/reboot.h>
+#include <xen/event.h>
+#include <xen/console.h>
+#include <xen/serial.h>
 
 #define KEY_MAX 256
 #define STR_MAX  64
index 6c8f57875d11c7c54953a8b4307c180026124d6b..b2057ead2b44b682de7d0b4adf7919718325ca86 100644 (file)
@@ -1,6 +1,6 @@
 
-#include <xeno/ctype.h>
-#include <xeno/lib.h>
+#include <xen/ctype.h>
+#include <xen/lib.h>
 
 
 /* for inc/ctype.h */
index 7d218f868bf53887dead90494644b2d7ec404ce3..efd75883c18b3d4ee9609f19f65e92a06203aad4 100644 (file)
  * to more aggressive flush types.
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/lib.h>
-#include <xeno/mm.h>
-#include <xeno/sched.h>
-#include <xeno/errno.h>
-#include <xeno/perfc.h>
-#include <xeno/interrupt.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
+#include <xen/sched.h>
+#include <xen/errno.h>
+#include <xen/perfc.h>
+#include <xen/interrupt.h>
 #include <asm/page.h>
 #include <asm/flushtlb.h>
 #include <asm/io.h>
index cf960c82b9732bb760d94c43c939530b70e86621..e7cc1ac8f93081115929f97f9643d117660d525a 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include <xeno/sched.h>
-#include <xeno/errno.h>
-#include <xeno/init.h>
-#include <xeno/slab.h>
-#include <xeno/spinlock.h>
-#include <xeno/if_ether.h>
-#include <xeno/skbuff.h>
-#include <xeno/netdevice.h>
-#include <xeno/in.h>
+#include <xen/sched.h>
+#include <xen/errno.h>
+#include <xen/init.h>
+#include <xen/slab.h>
+#include <xen/spinlock.h>
+#include <xen/if_ether.h>
+#include <xen/skbuff.h>
+#include <xen/netdevice.h>
+#include <xen/in.h>
 #include <asm/domain_page.h>
 #include <asm/io.h>
 #include <hypervisor-ifs/network.h>
index db9d2ba9ea15936f746af58fc4cc7bad97eb414a..f7436e31f6548b88a1ae83a00a0b898937f8bb47 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/lib.h>
 #include <asm/page.h>
-#include <xeno/spinlock.h>
-#include <xeno/slab.h>
+#include <xen/spinlock.h>
+#include <xen/slab.h>
 
 static spinlock_t alloc_lock = SPIN_LOCK_UNLOCKED;
 
index 00d0505503006b485df7e68e9d24ba2b46cc8191..20b0e5c116d6c229b75d4803ee441a2094b8b8f3 100644 (file)
@@ -1,9 +1,9 @@
 
-#include <xeno/lib.h>
-#include <xeno/smp.h>
-#include <xeno/time.h>
-#include <xeno/perfc.h>
-#include <xeno/keyhandler.h> 
+#include <xen/lib.h>
+#include <xen/smp.h>
+#include <xen/time.h>
+#include <xen/perfc.h>
+#include <xen/keyhandler.h> 
 
 #undef  PERFCOUNTER
 #undef  PERFCOUNTER_CPU
@@ -16,7 +16,7 @@ static struct {
     enum { TYPE_SINGLE, TYPE_CPU, TYPE_ARRAY } type;
     int nr_elements;
 } perfc_info[] = {
-#include <xeno/perfc_defn.h>
+#include <xen/perfc_defn.h>
 };
 
 #define NR_PERFCTRS (sizeof(perfc_info) / sizeof(perfc_info[0]))
index a95f496153b23ed97c7b7f40c4c7bcf3d53f34c0..e13dce8c2f834e45d0d90a48c1c7f85cc6e4b5ae 100644 (file)
  */
 
 
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/irq.h>
-#include <xeno/event.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/irq.h>
+#include <xen/event.h>
 #include <asm/pci.h>
 #include <hypervisor-ifs/hypervisor-if.h>
 #include <hypervisor-ifs/physdev.h>
index dbd35fc31d5e9f590718ece61a0b1c92c085c892..027d9d6df3c434f3e4f9ea9abd153767f10a27e9 100644 (file)
@@ -19,7 +19,7 @@
   linux/lib/rbtree.c
 */
 
-#include <xeno/rbtree.h>
+#include <xen/rbtree.h>
 
 static void __rb_rotate_left(rb_node_t * node, rb_root_t * root)
 {
index 549da588c4168e62f12133440abf50d2b09c52fd..089050f55c07b410512635faf87b8c2cfa4fe94a 100644 (file)
@@ -7,14 +7,14 @@
  * Arbitrary resource management.
  */
 
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/sched.h>
-#include <xeno/errno.h>
-#include <xeno/ioport.h>
-#include <xeno/init.h>
-#include <xeno/slab.h>
-#include <xeno/spinlock.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
+#include <xen/errno.h>
+#include <xen/ioport.h>
+#include <xen/init.h>
+#include <xen/slab.h>
+#include <xen/spinlock.h>
 #include <asm/io.h>
 
 struct resource ioport_resource = { "PCI IO", 0x0000, IO_SPACE_LIMIT, IORESOURCE_IO };
index 3d397edeb3fd0240e31eae3ab1915138ee93b980..3052d1e98c20238ad5b5d9b71725ca387de0b314 100644 (file)
  *              (see Duda & Cheriton SOSP'99)
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/lib.h>
-#include <xeno/sched.h>
-#include <xeno/delay.h>
-#include <xeno/event.h>
-#include <xeno/time.h>
-#include <xeno/ac_timer.h>
-#include <xeno/interrupt.h>
-#include <xeno/timer.h>
-#include <xeno/perfc.h>
-#include <xeno/sched-if.h>
-#include <xeno/slab.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
+#include <xen/delay.h>
+#include <xen/event.h>
+#include <xen/time.h>
+#include <xen/ac_timer.h>
+#include <xen/interrupt.h>
+#include <xen/timer.h>
+#include <xen/perfc.h>
+#include <xen/sched-if.h>
+#include <xen/slab.h>
 
 /* all per-domain BVT-specific scheduling info is stored here */
 struct bvt_dom_info
index e5eb2ecd1384bc1665605b6cdc09bb858591ddc1..544803f1faa3a020ec84303d7a452123f4e387db 100644 (file)
@@ -4,11 +4,11 @@
  * by Mark Williamson (C) 2004 Intel Research Cambridge
  */
 
-#include <xeno/sched.h>
-#include <xeno/sched-if.h>
+#include <xen/sched.h>
+#include <xen/sched-if.h>
 #include <hypervisor-ifs/sched_ctl.h>
-#include <xeno/ac_timer.h>
-#include <xeno/time.h>
+#include <xen/ac_timer.h>
+#include <xen/time.h>
 
 static s_time_t rr_slice = MILLISECS(10);
 
index 3f124104c952f8ba8d2adb7ae5cc3a6ba1257cb1..0738a843db8010f0ce5c97a2bd2ca01e0ad39d84 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/lib.h>
-#include <xeno/sched.h>
-#include <xeno/delay.h>
-#include <xeno/event.h>
-#include <xeno/time.h>
-#include <xeno/ac_timer.h>
-#include <xeno/interrupt.h>
-#include <xeno/timer.h>
-#include <xeno/perfc.h>
-#include <xeno/sched-if.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
+#include <xen/delay.h>
+#include <xen/event.h>
+#include <xen/time.h>
+#include <xen/ac_timer.h>
+#include <xen/interrupt.h>
+#include <xen/timer.h>
+#include <xen/perfc.h>
+#include <xen/sched-if.h>
 #include <hypervisor-ifs/sched_ctl.h>
-#include <xeno/trace.h>
+#include <xen/trace.h>
 
 /*#define WAKEUP_HISTO*/
 /*#define BLOCKTIME_HISTO*/
index 3452e89aa749408ed69423821e17c8538ef1c2bc..b0ac0e24408113a4119c66f2a162bb60e24db178 100644 (file)
  * FORCED_DEBUG        - 1 enables SLAB_RED_ZONE and SLAB_POISON (if possible)
  */
 
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/slab.h>
-#include <xeno/list.h>
-#include <xeno/spinlock.h>
-#include <xeno/errno.h>
-#include <xeno/smp.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/slab.h>
+#include <xen/list.h>
+#include <xen/spinlock.h>
+#include <xen/errno.h>
+#include <xen/smp.h>
+#include <xen/sched.h>
 
 
 #ifdef CONFIG_DEBUG_SLAB
index f5383074f24c6dc5a199c663f50e5ada79029871..d400406239cefa4ef5dd1bde04f57204c329436b 100644 (file)
  * Copyright (C) 1992 Linus Torvalds
  */
 
-#include <xeno/config.h>
-#include <xeno/mm.h>
-#include <xeno/sched.h>
-#include <xeno/interrupt.h>
-#include <xeno/init.h>
-#include <xeno/tqueue.h>
+#include <xen/config.h>
+#include <xen/mm.h>
+#include <xen/sched.h>
+#include <xen/interrupt.h>
+#include <xen/init.h>
+#include <xen/tqueue.h>
 
 irq_cpustat_t irq_stat[NR_CPUS];
 
index a8f5596a0f9f07291b6ee681425c82060cc0379b..bf9595d75b925981f0c7480f11a0ce254eb338f6 100644 (file)
@@ -15,9 +15,9 @@
  *    reentrant and should be faster). Use only strsep() in new code, please.
  */
  
-#include <xeno/types.h>
-#include <xeno/string.h>
-#include <xeno/ctype.h>
+#include <xen/types.h>
+#include <xen/string.h>
+#include <xen/ctype.h>
 
 #ifndef __HAVE_ARCH_STRNICMP
 /**
index f8cf731e9a12919a9351d6b414b1cff1ce3eb1f7..bc3a491236a6bf6086f1252597467bdf706e6342 100644 (file)
  *  1999-03-10  Improved NTP compatibility by Ulrich Windl
  */
 
-#include <xeno/config.h>
-#include <xeno/mm.h>
-#include <xeno/time.h>
-#include <xeno/timer.h>
-#include <xeno/timex.h>
-#include <xeno/tqueue.h>
-#include <xeno/delay.h>
-#include <xeno/interrupt.h>
-
-#include <xeno/event.h>
+#include <xen/config.h>
+#include <xen/mm.h>
+#include <xen/time.h>
+#include <xen/timer.h>
+#include <xen/timex.h>
+#include <xen/tqueue.h>
+#include <xen/delay.h>
+#include <xen/interrupt.h>
+
+#include <xen/event.h>
 
 #include <asm/uaccess.h>
 
index 82c135ca103859520864dfa29ccc95f9075028c3..59cefadf9af2bc5821e580459c6f752c8880de66 100644 (file)
  * generated on UP / SMP machines.  Each trace entry is timestamped so that
  * it's possible to reconstruct a chronological record of trace events.
  *
- * See also include/xeno/trace.h and the dom0 op in
+ * See also include/xen/trace.h and the dom0 op in
  * include/hypervisor-ifs/dom0_ops.h
  */
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 #ifdef TRACE_BUFFER
 
 #include <asm/timex.h>
 #include <asm/types.h>
 #include <asm/io.h>
-#include <xeno/lib.h>
-#include <xeno/sched.h>
-#include <xeno/slab.h>
-#include <xeno/smp.h>
-#include <xeno/spinlock.h>
-#include <xeno/trace.h>
-#include <xeno/errno.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
+#include <xen/slab.h>
+#include <xen/smp.h>
+#include <xen/spinlock.h>
+#include <xen/trace.h>
+#include <xen/errno.h>
 #include <asm/atomic.h>
 #include <hypervisor-ifs/dom0_ops.h>
 
@@ -44,7 +44,7 @@ int tb_init_done = 0;
  *
  * This function is called at start of day in order to initialise the per-cpu
  * trace buffers.  The trace buffers are then available for debugging use, via
- * the %TRACE_xD macros exported in <xeno/trace.h>.
+ * the %TRACE_xD macros exported in <xen/trace.h>.
  */
 void init_trace_bufs(void)
 {
index 74285f540614ce43e571ff7f345ba1b651a87cd3..fd304b9391ca9b5cf60a1b0d3df5fd185bb4f351 100644 (file)
@@ -15,8 +15,8 @@
  */
 
 #include <stdarg.h>
-#include <xeno/ctype.h>
-#include <xeno/lib.h>
+#include <xen/ctype.h>
+#include <xen/lib.h>
 
 /**
  * simple_strtoul - convert a string to an unsigned long
index 2e27a1aa2b739ccfc679cd06b8b3db477e04f4af..451503e081b89cf8ed34fea2fb66e82d9367e0b7 100644 (file)
  * For today, only the partition stuff - aeb, 990515
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/errno.h>
-/*#include <xeno/fs.h> */              /* for BLKRASET, ... */
-#include <xeno/sched.h>                /* for capable() */
-#include <xeno/blk.h>                  /* for set_device_ro() */
-#include <xeno/blkpg.h>
-#include <xeno/genhd.h>
-/*#include <xeno/swap.h>*/                     /* for is_swap_partition() */
-#include <xeno/module.h>               /* for EXPORT_SYMBOL */
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/errno.h>
+/*#include <xen/fs.h>  */              /* for BLKRASET, ... */
+#include <xen/sched.h>         /* for capable() */
+#include <xen/blk.h>                   /* for set_device_ro() */
+#include <xen/blkpg.h>
+#include <xen/genhd.h>
+/*#include <xen/swap.h>*/                      /* for is_swap_partition() */
+#include <xen/module.h>               /* for EXPORT_SYMBOL */
 
 #include <asm/uaccess.h>
 
index e61526625ca0673361b88491eb614f49c80e7e5d..abf5b7eea5a39fe0b897acd137e08b60e213201a 100644 (file)
  *
  */
 
-#include <xeno/config.h>       /* CONFIG_PROC_FS */
-#include <xeno/module.h>
-#include <xeno/version.h>
-#include <xeno/types.h>
-#include <xeno/pci.h>
-#include <xeno/kernel.h>
-#include <xeno/slab.h>
-#include <xeno/delay.h>
-#include <xeno/major.h>
-#include <xeno/blkpg.h>
-#include <xeno/interrupt.h>
-#include <xeno/timer.h>
-#include <xeno/init.h> 
-#include <xeno/hdreg.h>
-#include <xeno/spinlock.h>
+#include <xen/config.h>        /* CONFIG_PROC_FS */
+#include <xen/module.h>
+#include <xen/version.h>
+#include <xen/types.h>
+#include <xen/pci.h>
+#include <xen/kernel.h>
+#include <xen/slab.h>
+#include <xen/delay.h>
+#include <xen/major.h>
+#include <xen/blkpg.h>
+#include <xen/interrupt.h>
+#include <xen/timer.h>
+#include <xen/init.h> 
+#include <xen/hdreg.h>
+#include <xen/spinlock.h>
 #include <asm/uaccess.h>
 #include <asm/io.h>
 
-#include <xeno/blk.h>
-#include <xeno/blkdev.h>
-#include <xeno/genhd.h>
+#include <xen/blk.h>
+#include <xen/blkdev.h>
+#include <xen/genhd.h>
 
 #include <asm/irq.h>
 #include <asm/byteorder.h>
index c69d3c5a68b235a6bceca61153ab9bcae95cc398..439c7ddb2a5f2e81b61f61e8921a549fdbc7e10c 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef CCISS_H
 #define CCISS_H
 
-#include <xeno/genhd.h>
+#include <xen/genhd.h>
 
 #include "cciss_cmd.h"
 
index a76d20f09ab52d1e71b6e080348d8cb2dfe248dd..f44a2010af7205bc7f17b3f396772e069f4f3ae1 100644 (file)
@@ -31,7 +31,7 @@
 #include "../scsi/scsi.h"
 #include "../scsi/hosts.h"
 #include <asm/atomic.h>
-#include <xeno/timer.h>
+#include <xen/timer.h>
 
 #include "cciss_scsi.h"
 
index 281e8f8b8d717dbb1a279a93f3aa1dfb8ece8357..895dbe59ba62aba5af582e1c09e318ad8f99fac0 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-/*#include <xeno/fs.h>*/
-#include <xeno/blkdev.h>
-#include <xeno/elevator.h>
-#include <xeno/blk.h>
-#include <xeno/module.h>
+#include <xen/config.h>
+#include <xen/types.h>
+/*#include <xen/fs.h>*/
+#include <xen/blkdev.h>
+#include <xen/elevator.h>
+#include <xen/blk.h>
+#include <xen/module.h>
 #include <asm/uaccess.h>
 
 /*
index 89d892ad475b0372061f260520aad97fcb61a13a..bd2414c8cab474d9deea2a9d1489478164fae710 100644 (file)
  * TODO:  rip out the remaining init crap from this file  --hch
  */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-/*#include <xeno/fs.h>*/
-#include <xeno/genhd.h>
-#include <xeno/lib.h>
-#include <xeno/blk.h>
-#include <xeno/init.h>
-#include <xeno/spinlock.h>
+#include <xen/config.h>
+#include <xen/module.h>
+/*#include <xen/fs.h>*/
+#include <xen/genhd.h>
+#include <xen/lib.h>
+#include <xen/blk.h>
+#include <xen/init.h>
+#include <xen/spinlock.h>
 
 
 static rwlock_t gendisk_lock;
index f0121a91df10f9b682d9921bc4e3e20c15e272e4..7097c5a0ec2c95813f07d3d56a4b36f4f2f403f2 100644 (file)
 /*
  * This handles all read/write requests to block devices
  */
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/sched.h>
-#include <xeno/errno.h>
-#include <xeno/mm.h>
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
+#include <xen/errno.h>
+#include <xen/mm.h>
+#include <xen/init.h>
 #include <asm/system.h>
 #include <asm/io.h>
-#include <xeno/blk.h>
-#include <xeno/slab.h>
-#include <xeno/module.h>
+#include <xen/blk.h>
+#include <xen/slab.h>
+#include <xen/module.h>
 
 /* This will die as all synchronous stuff is coming to an end */
 #if 0 
index 4cc24993296bc3a8890c65616cb3705904af7830..2d8055142d3c08e3280e0456d60e9d6b1faa5f0f 100644 (file)
@@ -4,21 +4,21 @@
  * process incoming block io requests from guestos's.
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/sched.h>
-#include <xeno/blkdev.h>
-#include <xeno/event.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
+#include <xen/blkdev.h>
+#include <xen/event.h>
 #include <hypervisor-ifs/block.h>
 #include <hypervisor-ifs/hypervisor-if.h>
 #include <asm-i386/io.h>
 #include <asm/domain_page.h>
-#include <xeno/spinlock.h>
-#include <xeno/keyhandler.h>
-#include <xeno/interrupt.h>
-#include <xeno/vbd.h>
-#include <xeno/slab.h>
+#include <xen/spinlock.h>
+#include <xen/keyhandler.h>
+#include <xen/interrupt.h>
+#include <xen/vbd.h>
+#include <xen/slab.h>
 
 /*
  * These are rather arbitrary. They are fairly large because adjacent requests
index c2570064d8da503d24c6908424f246587d65fd20..d7bb53631daed9383735200c42b286747241b74d 100644 (file)
@@ -6,20 +6,20 @@
  * Copyright (c) 2003-2004, Keir Fraser & Steve Hand
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
 #include <asm/io.h>
-#include <xeno/slab.h>
-#include <xeno/sched.h>
-#include <xeno/vbd.h>
-#include <xeno/blkdev.h>
-#include <xeno/keyhandler.h>
+#include <xen/slab.h>
+#include <xen/sched.h>
+#include <xen/vbd.h>
+#include <xen/blkdev.h>
+#include <xen/keyhandler.h>
 #include <asm/current.h>
 #include <asm/domain_page.h>
 
 #include <hypervisor-ifs/hypervisor-if.h>
-#include <xeno/event.h>
+#include <xen/event.h>
 
 long __vbd_create(struct task_struct *p,
                   unsigned short vdevice,
index 0df4f589ad735d36c716f45fb8b4ed23a47a0ac0..db7970e86bd463eaa3993e784021b31b02bec410 100644 (file)
 /* #define ERRLOGMASK (CD_WARNING|CD_OPEN|CD_COUNT_TRACKS|CD_CLOSE) */
 /* #define ERRLOGMASK (CD_WARNING|CD_REG_UNREG|CD_DO_IOCTL|CD_OPEN|CD_CLOSE|CD_COUNT_TRACKS) */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-/* #include <xeno/fs.h> */
-#include <xeno/major.h>
-#include <xeno/types.h>
-#include <xeno/errno.h>
-#include <xeno/kernel.h>
-#include <xeno/mm.h>
-#include <xeno/slab.h> 
-#include <xeno/cdrom.h>
-/* #include <xeno/sysctl.h> */
-/* #include <xeno/proc_fs.h> */
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/module.h>
+/* #include <xen/fs.h> */
+#include <xen/major.h>
+#include <xen/types.h>
+#include <xen/errno.h>
+#include <xen/kernel.h>
+#include <xen/mm.h>
+#include <xen/slab.h> 
+#include <xen/cdrom.h>
+/* #include <xen/sysctl.h> */
+/* #include <xen/proc_fs.h> */
+#include <xen/init.h>
 
 /* #include <asm/fcntl.h> */
 /* #include <asm/segment.h> */
index 51070bd5dcb8df56e41eb8e46fcb92cce16210c4..027e22faa8499ecde3730a8ab28be4a086aecdc4 100644 (file)
@@ -7,14 +7,14 @@
  */
 
 #include <stdarg.h>
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/errno.h>
-#include <xeno/event.h>
-#include <xeno/spinlock.h>
-#include <xeno/console.h>
-#include <xeno/serial.h>
-#include <xeno/keyhandler.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/errno.h>
+#include <xen/event.h>
+#include <xen/spinlock.h>
+#include <xen/console.h>
+#include <xen/serial.h>
+#include <xen/keyhandler.h>
 #include <asm/uaccess.h>
 
 static int xpos, ypos;
index 225aa175ec98f39f5a1180acccaa5e26156abcb0..ed933462f05a76a64d63057c957d2d487768babd 100644 (file)
@@ -8,13 +8,13 @@
 
 #include <asm-i386/io.h>
 #include <asm-i386/irq.h>
-#include <xeno/sched.h>
-#include <xeno/keyhandler.h>  
+#include <xen/sched.h>
+#include <xen/keyhandler.h>  
 #include <hypervisor-ifs/kbd.h>
-#include <xeno/event.h>
-#include <xeno/console.h>
+#include <xen/event.h>
+#include <xen/console.h>
 
-/* Hash-defines torn from <xeno/pc_keyb.h> and <asm/keyboard.h> */
+/* Hash-defines torn from <xen/pc_keyb.h> and <asm/keyboard.h> */
 
 #define KBD_STATUS_REG      0x64 /* Status register (R) */
 #define KBD_CNTL_REG        0x64 /* Controller command register (W) */
index ad8a4a27023d78106d0a4bc82fd7b37cef5a4f40..04c41cc28e961597fb1f5e26d3f11acdb5dd9df3 100644 (file)
@@ -9,11 +9,11 @@
  */
 
 #include <asm-i386/io.h>
-#include <xeno/sched.h>
-#include <xeno/keyhandler.h> 
-#include <xeno/reboot.h>
-#include <xeno/irq.h>
-#include <xeno/serial.h>
+#include <xen/sched.h>
+#include <xen/keyhandler.h> 
+#include <xen/reboot.h>
+#include <xen/irq.h>
+#include <xen/serial.h>
 #include <asm/pdb.h>
 
 /* Register offsets */
index 5bcc450b5c691ce93296c6922b15dd62729e9e9a..168dfbca8d15ae40d0ae20a727832ca7a96b6d7a 100644 (file)
  
 #define IDECD_VERSION "4.59"
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/types.h>
-#include <xeno/kernel.h>
-#include <xeno/delay.h>
-#include <xeno/timer.h>
-#include <xeno/slab.h>
-#include <xeno/interrupt.h>
-#include <xeno/errno.h>
-#include <xeno/cdrom.h>
-#include <xeno/ide.h>
-// #include <xeno/completion.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/types.h>
+#include <xen/kernel.h>
+#include <xen/delay.h>
+#include <xen/timer.h>
+#include <xen/slab.h>
+#include <xen/interrupt.h>
+#include <xen/errno.h>
+#include <xen/cdrom.h>
+#include <xen/ide.h>
+// #include <xen/completion.h>
 
 #include <asm/irq.h>
 #include <asm/io.h>
index e2fe314851c95ae7c76bff3fcdb4726e3f345163..41db4722c5152bdb63002e6b56745291d8f595dd 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef _IDE_CD_H
 #define _IDE_CD_H
 
-#include <xeno/cdrom.h>
+#include <xen/cdrom.h>
 #include <asm/byteorder.h>
 
 /* Turn this on to have the driver print out the meanings of the
index 9611322ec56e5e4b211d8d6bfaae5362df13d630..42fe5313f3ba5412aa75b22f566968c086375ee8 100644 (file)
 
 #undef REALLY_SLOW_IO          /* most systems can safely undef this */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/timer.h>
-#include <xeno/mm.h>
-#include <xeno/interrupt.h>
-#include <xeno/major.h>
-#include <xeno/errno.h>
-#include <xeno/genhd.h>
-#include <xeno/slab.h>
-#include <xeno/delay.h>
-#include <xeno/ide.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/timer.h>
+#include <xen/mm.h>
+#include <xen/interrupt.h>
+#include <xen/major.h>
+#include <xen/errno.h>
+#include <xen/genhd.h>
+#include <xen/slab.h>
+#include <xen/delay.h>
+#include <xen/ide.h>
 
 #include <asm/byteorder.h>
 #include <asm/irq.h>
index c4661a6fbc3ab97b804698c1f05d7ce269463520..80fe970284df7f35b413035247bcdc943618a150 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/timer.h>
-#include <xeno/mm.h>
-#include <xeno/interrupt.h>
-#include <xeno/pci.h>
-#include <xeno/init.h>
-#include <xeno/ide.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/timer.h>
+#include <xen/mm.h>
+#include <xen/interrupt.h>
+#include <xen/pci.h>
+#include <xen/init.h>
+#include <xen/ide.h>
 
 #include <asm/byteorder.h>
 #include <asm/io.h>
index a60af2dad35957adbc365493b5420cfff6da9320..97c7b1c403e943e0401229667dae3cdb6db4729b 100644 (file)
  *  May be copied or modified under the terms of the GNU General Public License
  */
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #define __NO_VERSION__
-#include <xeno/module.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/timer.h>
-#include <xeno/mm.h>
-#include <xeno/interrupt.h>
-#include <xeno/major.h>
-#include <xeno/errno.h>
-#include <xeno/genhd.h>
-#include <xeno/blkpg.h>
-#include <xeno/slab.h>
-#include <xeno/pci.h>
-#include <xeno/delay.h>
-#include <xeno/hdreg.h>
-#include <xeno/ide.h>
+#include <xen/module.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/timer.h>
+#include <xen/mm.h>
+#include <xen/interrupt.h>
+#include <xen/major.h>
+#include <xen/errno.h>
+#include <xen/genhd.h>
+#include <xen/blkpg.h>
+#include <xen/slab.h>
+#include <xen/pci.h>
+#include <xen/delay.h>
+#include <xen/hdreg.h>
+#include <xen/ide.h>
 
 #include <asm/byteorder.h>
 #include <asm/irq.h>
index 0e28927e70476a2210048eeb3ecf3f2258aff583..1413d26fdcbbc283b526acc506afa12f1e57db75 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * linux/drivers/ide/ide-geometry.c
  */
-#include <xeno/config.h>
-#include <xeno/ide.h>
+#include <xen/config.h>
+#include <xen/ide.h>
 #include <asm/mc146818rtc.h>
 #include <asm/io.h>
 
index 7c5e69233472e19166e602fbcc41b53fc4468ab5..3196a3794913a991e0d783fb7d089a0e0c8ccdd1 100644 (file)
  *  configuration of all PCI IDE interfaces present in a system.  
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/kernel.h>
-#include <xeno/timer.h>
-#include <xeno/mm.h>
-#include <xeno/interrupt.h>
-#include <xeno/pci.h>
-#include <xeno/init.h>
-#include <xeno/ide.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/kernel.h>
+#include <xen/timer.h>
+#include <xen/mm.h>
+#include <xen/interrupt.h>
+#include <xen/pci.h>
+#include <xen/init.h>
+#include <xen/ide.h>
 
 #include <asm/io.h>
 #include <asm/irq.h>
index 99f38dfcb8fd88b2b3ae80c43f098ab05e55f456..a906152048b97aba43a622c01dc5eb8ca27c2e31 100644 (file)
 
 #undef REALLY_SLOW_IO          /* most systems can safely undef this */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/timer.h>
-#include <xeno/mm.h>
-#include <xeno/interrupt.h>
-#include <xeno/major.h>
-#include <xeno/errno.h>
-#include <xeno/genhd.h>
-#include <xeno/slab.h>
-#include <xeno/delay.h>
-#include <xeno/ide.h>
-#include <xeno/spinlock.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/timer.h>
+#include <xen/mm.h>
+#include <xen/interrupt.h>
+#include <xen/major.h>
+#include <xen/errno.h>
+#include <xen/genhd.h>
+#include <xen/slab.h>
+#include <xen/delay.h>
+#include <xen/ide.h>
+#include <xen/spinlock.h>
 
 #include <asm/byteorder.h>
 #include <asm/irq.h>
index 6e1286165fb9a4b20877ba27926cc2ac090f0098..2cfeaf6ba6d863634ddf4fd1cb2e18b2035d1150 100644 (file)
@@ -9,23 +9,23 @@
  * IDE_DEBUG(__LINE__);
  */
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #define __NO_VERSION__
-#include <xeno/module.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/timer.h>
-#include <xeno/mm.h>
-#include <xeno/interrupt.h>
-#include <xeno/major.h>
-#include <xeno/errno.h>
-#include <xeno/genhd.h>
-#include <xeno/blkpg.h>
-#include <xeno/slab.h>
-#include <xeno/pci.h>
-#include <xeno/delay.h>
-#include <xeno/hdreg.h>
-#include <xeno/ide.h>
+#include <xen/module.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/timer.h>
+#include <xen/mm.h>
+#include <xen/interrupt.h>
+#include <xen/major.h>
+#include <xen/errno.h>
+#include <xen/genhd.h>
+#include <xen/blkpg.h>
+#include <xen/slab.h>
+#include <xen/pci.h>
+#include <xen/delay.h>
+#include <xen/hdreg.h>
+#include <xen/ide.h>
 
 #include <asm/domain_page.h>
 #include <asm/byteorder.h>
diff --git a/xen/drivers/ide/ide-xen.c b/xen/drivers/ide/ide-xen.c
new file mode 100644 (file)
index 0000000..c925ab0
--- /dev/null
@@ -0,0 +1,61 @@
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/ide.h>
+#include <xen/vbd.h>
+#include <asm/domain_page.h>
+#include <asm/io.h>
+
+static kdev_t ide_devs[] = { 
+    MKDEV(IDE0_MAJOR, 0), MKDEV(IDE0_MAJOR, 64),                /* hda, hdb */
+    MKDEV(IDE1_MAJOR, 0), MKDEV(IDE1_MAJOR, 64),                /* hdc, hdd */
+    MKDEV(IDE2_MAJOR, 0), MKDEV(IDE2_MAJOR, 64),                /* hde, hdf */
+    MKDEV(IDE3_MAJOR, 0), MKDEV(IDE3_MAJOR, 64),                /* hdg, hdh */
+    MKDEV(IDE4_MAJOR, 0), MKDEV(IDE4_MAJOR, 64),                /* hdi, hdj */
+    MKDEV(IDE5_MAJOR, 0), MKDEV(IDE5_MAJOR, 64),                /* hdk, hdl */
+    MKDEV(IDE6_MAJOR, 0), MKDEV(IDE6_MAJOR, 64),                /* hdm, hdn */
+    MKDEV(IDE7_MAJOR, 0), MKDEV(IDE7_MAJOR, 64),                /* hdo, hdp */
+    MKDEV(IDE8_MAJOR, 0), MKDEV(IDE8_MAJOR, 64),                /* hdq, hdr */
+    MKDEV(IDE9_MAJOR, 0), MKDEV(IDE9_MAJOR, 64)                 /* hds, hdt */
+};
+
+void ide_probe_devices(xen_disk_info_t* xdi)
+{
+    int i, unit;
+    ide_drive_t *drive;
+    xen_disk_t *xd = &xdi->disks[xdi->count];
+
+    for ( i = 0; i < MAX_HWIFS; i++ )
+    {
+       ide_hwif_t *hwif = &ide_hwifs[i];
+       if ( !hwif->present ) continue;
+
+        for ( unit = 0; unit < MAX_DRIVES; unit++ )
+        {
+            drive = &hwif->drives[unit];
+
+            if ( !drive->present )
+                continue;
+
+           if ( xdi->count == xdi->max )
+                BUG();
+
+           /* We export 'raw' linux device numbers to domain 0. */
+           xd->device = ide_devs[(i * MAX_DRIVES) + unit]; 
+
+           /*
+            * NB: we use the ide 'media' field (ide_disk, ide_cdrom, etc) as 
+            * our 'type' field (XD_TYPE_DISK, XD_TYPE_CDROM, etc). Hence must 
+            * ensure these are kept in sync.
+            */
+           if ( (xd->info = drive->media) == XD_TYPE_CDROM ) 
+               xd->info |= XD_FLAG_RO; 
+
+           xd->capacity = current_capacity(drive);
+           xd->domain   = 0;
+               
+            xdi->count++;
+            xd++;
+        }
+    }
+}
diff --git a/xen/drivers/ide/ide-xeno.c b/xen/drivers/ide/ide-xeno.c
deleted file mode 100644 (file)
index 1fc3ce3..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/ide.h>
-#include <xeno/vbd.h>
-#include <asm/domain_page.h>
-#include <asm/io.h>
-
-static kdev_t ide_devs[] = { 
-    MKDEV(IDE0_MAJOR, 0), MKDEV(IDE0_MAJOR, 64),                /* hda, hdb */
-    MKDEV(IDE1_MAJOR, 0), MKDEV(IDE1_MAJOR, 64),                /* hdc, hdd */
-    MKDEV(IDE2_MAJOR, 0), MKDEV(IDE2_MAJOR, 64),                /* hde, hdf */
-    MKDEV(IDE3_MAJOR, 0), MKDEV(IDE3_MAJOR, 64),                /* hdg, hdh */
-    MKDEV(IDE4_MAJOR, 0), MKDEV(IDE4_MAJOR, 64),                /* hdi, hdj */
-    MKDEV(IDE5_MAJOR, 0), MKDEV(IDE5_MAJOR, 64),                /* hdk, hdl */
-    MKDEV(IDE6_MAJOR, 0), MKDEV(IDE6_MAJOR, 64),                /* hdm, hdn */
-    MKDEV(IDE7_MAJOR, 0), MKDEV(IDE7_MAJOR, 64),                /* hdo, hdp */
-    MKDEV(IDE8_MAJOR, 0), MKDEV(IDE8_MAJOR, 64),                /* hdq, hdr */
-    MKDEV(IDE9_MAJOR, 0), MKDEV(IDE9_MAJOR, 64)                 /* hds, hdt */
-};
-
-void ide_probe_devices(xen_disk_info_t* xdi)
-{
-    int i, unit;
-    ide_drive_t *drive;
-    xen_disk_t *xd = &xdi->disks[xdi->count];
-
-    for ( i = 0; i < MAX_HWIFS; i++ )
-    {
-       ide_hwif_t *hwif = &ide_hwifs[i];
-       if ( !hwif->present ) continue;
-
-        for ( unit = 0; unit < MAX_DRIVES; unit++ )
-        {
-            drive = &hwif->drives[unit];
-
-            if ( !drive->present )
-                continue;
-
-           if ( xdi->count == xdi->max )
-                BUG();
-
-           /* We export 'raw' linux device numbers to domain 0. */
-           xd->device = ide_devs[(i * MAX_DRIVES) + unit]; 
-
-           /*
-            * NB: we use the ide 'media' field (ide_disk, ide_cdrom, etc) as 
-            * our 'type' field (XD_TYPE_DISK, XD_TYPE_CDROM, etc). Hence must 
-            * ensure these are kept in sync.
-            */
-           if ( (xd->info = drive->media) == XD_TYPE_CDROM ) 
-               xd->info |= XD_FLAG_RO; 
-
-           xd->capacity = current_capacity(drive);
-           xd->domain   = 0;
-               
-            xdi->count++;
-            xd++;
-        }
-    }
-}
index b1d193772d88d6ca344f509b77683caedad07797..e7e278255e1b60d9a9d21b535277fc1fb45dab76 100644 (file)
 
 #define _IDE_C                 /* Tell ide.h it's really us */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-/*#include <xeno/kernel.h>*/
-#include <xeno/timer.h>
-#include <xeno/mm.h>
-#include <xeno/interrupt.h>
-#include <xeno/major.h>
-#include <xeno/errno.h>
-#include <xeno/genhd.h>
-#include <xeno/blkpg.h>
-#include <xeno/slab.h>
-#include <xeno/init.h>
-#include <xeno/pci.h>
-#include <xeno/delay.h>
-#include <xeno/ide.h>
-/*#include <xeno/devfs_fs_kernel.h>*/
-/*#include <xeno/completion.h>*/
-/*#include <xeno/reboot.h>*/
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+/*#include <xen/kernel.h>*/
+#include <xen/timer.h>
+#include <xen/mm.h>
+#include <xen/interrupt.h>
+#include <xen/major.h>
+#include <xen/errno.h>
+#include <xen/genhd.h>
+#include <xen/blkpg.h>
+#include <xen/slab.h>
+#include <xen/init.h>
+#include <xen/pci.h>
+#include <xen/delay.h>
+#include <xen/ide.h>
+/*#include <xen/devfs_fs_kernel.h>*/
+/*#include <xen/completion.h>*/
+/*#include <xen/reboot.h>*/
 
 #include <asm/domain_page.h>
 #include <asm/byteorder.h>
 #include "ide_modes.h"
 
 #ifdef CONFIG_KMOD
-#include <xeno/kmod.h>
+#include <xen/kmod.h>
 #endif /* CONFIG_KMOD */
 
 #ifdef CONFIG_IDE_TASKFILE_IO
index e8d7be152fdcc4e83768943a6adf9038163fafc8..c848380b13ca4ec521b8cf6757df3dbde41c9982 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef _IDE_MODES_H
 #define _IDE_MODES_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 /*
  * Shared data/functions for determining best PIO mode for an IDE drive.
index be2ba7ee1f7d2535db3f22f637a7e765d14edcef..e68deef9bae6a38b19f780e1010736a5437f105e 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/kernel.h>
-#include <xeno/ioport.h>
-#include <xeno/pci.h>
-#include <xeno/hdreg.h>
-#include <xeno/ide.h>
-#include <xeno/delay.h>
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/kernel.h>
+#include <xen/ioport.h>
+#include <xen/pci.h>
+#include <xen/hdreg.h>
+#include <xen/ide.h>
+#include <xen/delay.h>
+#include <xen/init.h>
 
 #include <asm/io.h>
 
@@ -72,8 +72,8 @@
 #define DISPLAY_PIIX_TIMINGS
 
 #if defined(DISPLAY_PIIX_TIMINGS) && defined(CONFIG_PROC_FS)
-#include <xeno/stat.h>
-#include <xeno/proc_fs.h>
+#include <xen/stat.h>
+#include <xen/proc_fs.h>
 
 static int piix_get_info(char *, char **, off_t, int);
 extern int (*piix_display_info)(char *, char **, off_t, int); /* ide-proc.c */
index 38799a77ad9e506664663bc803e3ca7a8d6dd907..07eae226c995cf3ee3013f449e09dfad0589e19c 100644 (file)
@@ -3,9 +3,9 @@
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 
 #ifdef __KERNEL__
-#include <xeno/types.h>                /* needed for u8, etc. */
-#include <xeno/string.h>               /* needed for strcat   */
-#include <xeno/kernel.h>               /* needed for sprintf  */
+#include <xen/types.h>         /* needed for u8, etc. */
+#include <xen/string.h>                /* needed for strcat   */
+#include <xen/kernel.h>                /* needed for sprintf  */
 #else
     #ifndef U_STUFF_DEFINED
     #define U_STUFF_DEFINED
index 8ad8925032c9bb0ec408dd664d90684d930e1af0..cb2a87355ba55ab6349ac87bc216eff11211fe5f 100644 (file)
@@ -4,10 +4,10 @@
 #define FUSION_LINUX_COMPAT_H
 /*{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 
-#include <xeno/version.h>
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/pci.h>
+#include <xen/version.h>
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/pci.h>
 
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 
index dcf6123114e16183a182b76a0737ca876683fdf4..051357aa1bd8fa8999835990e3f3e3935b763eb0 100644 (file)
 */
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 
-#include <xeno/config.h>
-#include <xeno/version.h>
-#include <xeno/kernel.h>
-#include <xeno/module.h>
-#include <xeno/errno.h>
-#include <xeno/init.h>
-#include <xeno/slab.h>
-#include <xeno/types.h>
-#include <xeno/pci.h>
-#include <xeno/kdev_t.h>
-#include <xeno/blkdev.h>
-#include <xeno/delay.h>
-#include <xeno/interrupt.h>            /* needed for in_interrupt() proto */
+#include <xen/config.h>
+#include <xen/version.h>
+#include <xen/kernel.h>
+#include <xen/module.h>
+#include <xen/errno.h>
+#include <xen/init.h>
+#include <xen/slab.h>
+#include <xen/types.h>
+#include <xen/pci.h>
+#include <xen/kdev_t.h>
+#include <xen/blkdev.h>
+#include <xen/delay.h>
+#include <xen/interrupt.h>             /* needed for in_interrupt() proto */
 #include <asm/byteorder.h>     /* SAE: Necessary... */
 #include <asm/io.h>
 #ifdef CONFIG_MTRR
index fb5544ee021032c29ecf23621c0f82b309a01b2a..1ca83d3278a46541c6c7c6488b6c94bb3924fb21 100644 (file)
@@ -55,7 +55,7 @@
 #define MPTBASE_H_INCLUDED
 /*{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 
-#include <xeno/timer.h>
+#include <xen/timer.h>
 
 #include "linux_compat.h"      /* linux-2.2.x (vs. -2.4.x) tweaks */
 #include "scsi3.h"             /* SCSI defines */
 
 /* SAE: Xen doesn't have a proc filesystem */
 #if defined(CONFIG_PROC_FS)
-#include <xeno/proc_fs.h>
+#include <xen/proc_fs.h>
 #endif
 
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
index 5094d811d2da4317722b66699962fb3f7465addf..836905b1f61c0225e7f2b7ccd98201885800eb82 100644 (file)
 */
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 
-#include <xeno/types.h>        /* SAE: Necessary... */
-#include <xeno/module.h>
-#include <xeno/version.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/errno.h>
-#include <xeno/kdev_t.h>
-#include <xeno/blkdev.h>
-#include <xeno/blk.h>          /* for io_request_lock (spinlock) decl */
-#include <xeno/delay.h>        /* for mdelay */
-#include <xeno/interrupt.h>    /* needed for in_interrupt() proto */
-#include <xeno/reboot.h>       /* notifier code */
-#include <xeno/tqueue.h>
+#include <xen/types.h> /* SAE: Necessary... */
+#include <xen/module.h>
+#include <xen/version.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/errno.h>
+#include <xen/kdev_t.h>
+#include <xen/blkdev.h>
+#include <xen/blk.h>           /* for io_request_lock (spinlock) decl */
+#include <xen/delay.h> /* for mdelay */
+#include <xen/interrupt.h>     /* needed for in_interrupt() proto */
+#include <xen/reboot.h>        /* notifier code */
+#include <xen/tqueue.h>
 #include <asm/byteorder.h>     /* SAE: Necessary... */
 #include "../../scsi/scsi.h"
 #include "../../scsi/hosts.h"
index 8f60d25ee76be5a2cadfbca7055edaf3e5168944..90b87c76e374e5d26536eb839c938cbcb32be4db 100644 (file)
@@ -62,8 +62,8 @@
 #define SCSIHOST_H_INCLUDED
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 
-#include <xeno/tqueue.h>
-#include <xeno/version.h>
+#include <xen/tqueue.h>
+#include <xen/version.h>
 
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 /*
@@ -155,7 +155,7 @@ struct mptscsih_driver_setup
                 *      Super HACK!  -by sralston:-(
                 *      (good grief; heaven help me!)
                 */
-#              include <xeno/capability.h>
+#              include <xen/capability.h>
 #              if !defined(CAP_LEASE) && !defined(MODULE)
 #                      undef MPT_SCSIHOST_NEED_ENTRY_EXIT_HOOKUPS
 #              endif
@@ -168,12 +168,12 @@ struct mptscsih_driver_setup
 
 /*
  *     tq_scheduler disappeared @ lk-2.4.0-test12
- *     (right when <xeno/sched.h> newly defined TQ_ACTIVE)
+ *     (right when <xen/sched.h> newly defined TQ_ACTIVE)
  *     tq_struct reworked in 2.5.41. Include workqueue.h.
  */
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,41)
-#      include <xeno/sched.h>
-#      include <xeno/workqueue.h>
+#      include <xen/sched.h>
+#      include <xen/workqueue.h>
 #define SCHEDULE_TASK(x)               \
        if (schedule_work(x) == 0) {    \
                /*MOD_DEC_USE_COUNT*/;  \
@@ -181,7 +181,7 @@ struct mptscsih_driver_setup
 #else
 #define HAVE_TQ_SCHED  1
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
-#      include <xeno/sched.h>
+#      include <xen/sched.h>
 #      ifdef TQ_ACTIVE
 #              undef HAVE_TQ_SCHED
 #      endif
index 2e6934d7ecc94c28e0853755d310926c039cb904..e7eaf30ef2cec382c7854a64e118b24aee3cb765 100644 (file)
@@ -21,7 +21,7 @@
  *  Includes
  */
 #ifdef __KERNEL__
-#include <xeno/types.h>
+#include <xen/types.h>
 #else
     #ifndef U_STUFF_DEFINED
     #define U_STUFF_DEFINED
index 86c67dec50afc2181846ea969dfae66e962ed181..7340657091f5f0bfb1b66a614056ae920a3f7790 100644 (file)
@@ -224,26 +224,26 @@ static int vortex_debug = 1;
 #error You must compile this driver with "-O".
 #endif
 
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/module.h>
-//#include <xeno/kernel.h>
-#include <xeno/sched.h>
-//#include <xeno/string.h>
-#include <xeno/timer.h>
-#include <xeno/errno.h>
-//#include <xeno/in.h>
-#include <xeno/ioport.h>
-#include <xeno/slab.h>
-#include <xeno/interrupt.h>
-#include <xeno/pci.h>
-#include <xeno/mii.h>
-#include <xeno/init.h>
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
-#include <xeno/skbuff.h>
-#include <xeno/ethtool.h>
-//#include <xeno/highmem.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/module.h>
+//#include <xen/kernel.h>
+#include <xen/sched.h>
+//#include <xen/string.h>
+#include <xen/timer.h>
+#include <xen/errno.h>
+//#include <xen/in.h>
+#include <xen/ioport.h>
+#include <xen/slab.h>
+#include <xen/interrupt.h>
+#include <xen/pci.h>
+#include <xen/mii.h>
+#include <xen/init.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
+#include <xen/skbuff.h>
+#include <xen/ethtool.h>
+//#include <xen/highmem.h>
 #include <asm/irq.h>                   /* For NR_IRQS only. */
 #include <asm/bitops.h>
 #include <asm/io.h>
@@ -262,7 +262,7 @@ static int vortex_debug = 1;
 
 #define RUN_AT(x) (jiffies + (x))
 
-#include <xeno/delay.h>
+#include <xen/delay.h>
 
 
 static char version[] __devinitdata =
index aa6b22a783d9633616f20d2db5013c5320993984..f3a5f421caa3a525cfdc32dead1fd0af297e8b38 100644 (file)
 #define DRV_VERSION    "0.9.26"
 
 
-#include <xeno/config.h>
-#include <xeno/module.h>
+#include <xen/config.h>
+#include <xen/module.h>
 
 #ifdef XEN
 typedef int pid_t;
-#include <xeno/lib.h>
+#include <xen/lib.h>
 #endif
-#include <xeno/kernel.h>
-#include <xeno/compiler.h>
-#include <xeno/pci.h>
-#include <xeno/init.h>
-#include <xeno/ioport.h>
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
+#include <xen/kernel.h>
+#include <xen/compiler.h>
+#include <xen/pci.h>
+#include <xen/init.h>
+#include <xen/ioport.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
 #ifndef XEN
-#include <xeno/rtnetlink.h>
+#include <xen/rtnetlink.h>
 #endif
-#include <xeno/delay.h>
-#include <xeno/ethtool.h>
-#include <xeno/mii.h>
+#include <xen/delay.h>
+#include <xen/ethtool.h>
+#include <xen/mii.h>
 #ifndef XEN
-#include <xeno/completion.h>
+#include <xen/completion.h>
 #endif
-#include <xeno/crc32.h>
+#include <xen/crc32.h>
 #include <asm/io.h>
 #include <asm/uaccess.h>
 
index 66f3d4f0558daef2818429e8028349165fe75952..91fa78dcf0aff111f8d92ce09734f6d2ac55dc03 100644 (file)
@@ -11,8 +11,8 @@
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  *             Donald J. Becker, <becker@scyld.com>
  */
-#include <xeno/config.h>
-#include <xeno/netdevice.h>
+#include <xen/config.h>
+#include <xen/netdevice.h>
 
 /*
  * KAF (23/7/02): All the probe shit is gone from here -- each network
index d0d1976cea6e7c8efb26ba015bf8a19126d960e7..dbc3682ad790e8bedc905a69d71f84782bc078de 100644 (file)
@@ -4,11 +4,11 @@
  * A cut down version of Linux's dummy network driver. GPLed and all that.
  */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/kernel.h>
-#include <xeno/netdevice.h>
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/kernel.h>
+#include <xen/netdevice.h>
+#include <xen/init.h>
 
 static int dummy_xmit(struct sk_buff *skb, struct net_device *dev);
 static struct net_device_stats *dummy_get_stats(struct net_device *dev);
index 9bac4a7044fd32ed99a7acbbe1dce9eb53baf20b..1c42fb5069033fdff5301f7cd7b5575b7d70b0d4 100644 (file)
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *******************************************************************************/
 
 #ifndef _E100_INC_
 #define _E100_INC_
 
-#include <xeno/module.h>
-#include <xeno/types.h>
-#include <xeno/init.h>
-#include <xeno/mm.h>
-#include <xeno/errno.h>
-#include <xeno/ioport.h>
-#include <xeno/pci.h>
-#include <xeno/kernel.h>
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
-#include <xeno/skbuff.h>
-#include <xeno/delay.h>
-#include <xeno/timer.h>
-#include <xeno/slab.h>
-#include <xeno/interrupt.h>
-#include <xeno/version.h>
-#include <xeno/string.h>
-/*#include <xeno/wait.h>*/
-#include <xeno/reboot.h>
+#include <xen/module.h>
+#include <xen/types.h>
+#include <xen/init.h>
+#include <xen/mm.h>
+#include <xen/errno.h>
+#include <xen/ioport.h>
+#include <xen/pci.h>
+#include <xen/kernel.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
+#include <xen/skbuff.h>
+#include <xen/delay.h>
+#include <xen/timer.h>
+#include <xen/slab.h>
+#include <xen/interrupt.h>
+#include <xen/version.h>
+#include <xen/string.h>
+/*#include <xen/wait.h>*/
+#include <xen/reboot.h>
 #include <asm/io.h>
 #include <asm/unaligned.h>
 #include <asm/processor.h>
-#include <xeno/ethtool.h>
-/*#include <xeno/inetdevice.h>*/
+#include <xen/ethtool.h>
+/*#include <xen/inetdevice.h>*/
 #include <asm/bitops.h>
 
-#include <xeno/if.h>
+#include <xen/if.h>
 #include <asm/uaccess.h>
-/*#include <xeno/ip.h>*/
-#include <xeno/if_vlan.h>
-#include <xeno/mii.h>
+/*#include <xen/ip.h>*/
+#include <xen/if_vlan.h>
+#include <xen/mii.h>
 
 #define yield() ((void)0)
 
index 1118f6574586c84824a55cac87866a8a5222327c..d9df35677a7ca1c9d2eb5fe04386aa68643593fa 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *******************************************************************************/
 
index 35fb53e12ef2db06bf339c05b17bbb7f483a1f59..5d1e194ff25bebbe18f206aa9be86ea25715fa4d 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *******************************************************************************/
 
index cd3dec4447bffd79763e5a0afe6510c4a63a6bc1..ff843e161b76a4869801357d998b479102af2a8c 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *******************************************************************************/
 
index 2314ed3c17a1a0a328898f7dbc97b7884106c659..f8afe52f6b82134fa2f4ddaefd0403ee01762ded 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *******************************************************************************/
 
  * 2.1.24       10/7/02
  */
  
-#include <xeno/config.h>
+#include <xen/config.h>
 /*#include <net/checksum.h>*/
-/*#include <xeno/tcp.h>*/
-/*#include <xeno/udp.h>*/
+/*#include <xen/tcp.h>*/
+/*#include <xen/udp.h>*/
 #include "e100.h"
 #include "e100_ucode.h"
 #include "e100_config.h"
@@ -379,7 +379,7 @@ static inline tcb_t *e100_prepare_xmit_buff(struct e100_private *,
                                            struct sk_buff *);
 static void e100_set_multi_exec(struct net_device *dev);
 
-MODULE_AUTHOR("Intel Corporation, <xeno.nics@intel.com>");
+MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>");
 MODULE_DESCRIPTION("Intel(R) PRO/100 Network Driver");
 MODULE_LICENSE("GPL");
 
index 76ad3c4e8852f398521a848fe934522961dd694e..08782934bdf6f5da98d819357f22eff183e6d78f 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *******************************************************************************/
 
index aff38fe5861bfecfa5622c304bd2e5779c0ede08..df2d483e67f877eb5d5e3721937009f2cc555a44 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *******************************************************************************/
 
index cdbb1bdfb8d4564aeea6448858526562c389cc39..0ff7266ef8e2acd03f6528816affeb9ff6d4abbc 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *******************************************************************************/
 
index 8a18b953f9a8455eb4ef4f89765faec6c22a2481..ccbcd05583aaf43d20b1b363efb401577bf1096a 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *******************************************************************************/
 
index ed6fee3f8890caea641cd84aa5c02c3c2a313daa..b3e2818fccd15ca25312535edbdb8ab23814eabd 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
 *******************************************************************************/
 #ifndef _E1000_H_
 #define _E1000_H_
 
-//#include <xeno/stddef.h>
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/types.h>
+//#include <xen/stddef.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/types.h>
 #include <asm/byteorder.h>
-#include <xeno/init.h>
-#include <xeno/mm.h>
-#include <xeno/errno.h>
-#include <xeno/ioport.h>
-#include <xeno/pci.h>
-#include <xeno/kernel.h>
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
-#include <xeno/skbuff.h>
-#include <xeno/delay.h>
-#include <xeno/timer.h>
-#include <xeno/slab.h>
-#include <xeno/interrupt.h>
-#include <xeno/string.h>
-//#include <xeno/pagemap.h>
+#include <xen/init.h>
+#include <xen/mm.h>
+#include <xen/errno.h>
+#include <xen/ioport.h>
+#include <xen/pci.h>
+#include <xen/kernel.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
+#include <xen/skbuff.h>
+#include <xen/delay.h>
+#include <xen/timer.h>
+#include <xen/slab.h>
+#include <xen/interrupt.h>
+#include <xen/string.h>
+//#include <xen/pagemap.h>
 #include <asm/bitops.h>
 #include <asm/io.h>
 #include <asm/irq.h>
-//#include <xeno/capability.h>
-#include <xeno/in.h>
-//#include <xeno/ip.h>
-//#include <xeno/tcp.h>
-//#include <xeno/udp.h>
+//#include <xen/capability.h>
+#include <xen/in.h>
+//#include <xen/ip.h>
+//#include <xen/tcp.h>
+//#include <xen/udp.h>
 //#include <net/pkt_sched.h>
-#include <xeno/list.h>
-#include <xeno/reboot.h>
+#include <xen/list.h>
+#include <xen/reboot.h>
 #ifdef NETIF_F_TSO
 #include <net/checksum.h>
 #endif
 #ifdef SIOCGMIIPHY
-#include <xeno/mii.h>
+#include <xen/mii.h>
 #endif
 #ifdef SIOCETHTOOL
-#include <xeno/ethtool.h>
+#include <xen/ethtool.h>
 #endif
 #ifdef NETIF_F_HW_VLAN_TX
-#include <xeno/if_vlan.h>
+#include <xen/if_vlan.h>
 #endif
 
 #define BAR_0          0
index 2b41739049b352a341877ed0429e98f80a8c2ada..fdfaa807331fec42bf449e62d904cab2121e2450 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
 *******************************************************************************/
index 5a390e879dd0d8aff286563677345388fdcd14d2..303651e11525ade0583e52d6d468d0e9c94d17c8 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
 *******************************************************************************/
index 34755a450d5659454b060e75ea4843c64312f620..4976a3c0843234360525ec43d109c7fdf59fd6d7 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
 *******************************************************************************/
index e4b0e411ec407630eb05c7730eedea02ba90947a..4b29541b8d0512491c1f2a58a24d1d939dedfc8d 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
 *******************************************************************************/
@@ -204,7 +204,7 @@ static struct pci_driver e1000_driver = {
 #endif
 };
 
-MODULE_AUTHOR("Intel Corporation, <xeno.nics@intel.com>");
+MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>");
 MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver");
 MODULE_LICENSE("GPL");
 
index 38810ee4b1cf3d4f9b34ba9048cf74f8d8a5aeb5..4ed594969269d1bc94910abf1ce595a87bbf43ef 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
 *******************************************************************************/
 #ifndef _E1000_OSDEP_H_
 #define _E1000_OSDEP_H_
 
-#include <xeno/types.h>
-#include <xeno/pci.h>
-#include <xeno/delay.h>
+#include <xen/types.h>
+#include <xen/pci.h>
+#include <xen/delay.h>
 #include <asm/io.h>
-#include <xeno/interrupt.h>
-#include <xeno/sched.h>
+#include <xen/interrupt.h>
+#include <xen/sched.h>
 #include "kcompat.h"
 
 #define usec_delay(x) udelay(x)
index 7516296714d62667c9b848959f525ab6fa9e6e27..d57f9ff558bd8ac66ee13faaf353861ca9f85d06 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
 *******************************************************************************/
index d461c13bcaf0293689b7632d616fb32f6fac6038..384b1f782f1485f492269034fb2decbd0e7c76f0 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
 *******************************************************************************/
index a96824af68a85529ca39c25072f91eb59f3cf758..cb44a63be113e93aed2e08dcb6d4b2c22d8474ea 100644 (file)
@@ -21,7 +21,7 @@
   file called LICENSE.
   
   Contact Information:
-  Linux NICS <xeno.nics@intel.com>
+  Linux NICS <linux.nics@intel.com>
   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
 *******************************************************************************/
 #ifndef _KCOMPAT_H_
 #define _KCOMPAT_H_
 
-#include <xeno/version.h>
-#include <xeno/types.h>
-#include <xeno/errno.h>
-#include <xeno/module.h>
-#include <xeno/pci.h>
-#include <xeno/netdevice.h>
-#include <xeno/ioport.h>
-#include <xeno/slab.h>
-//#include <xeno/pagemap.h>
-#include <xeno/list.h>
-#include <xeno/sched.h>
+#include <xen/version.h>
+#include <xen/types.h>
+#include <xen/errno.h>
+#include <xen/module.h>
+#include <xen/pci.h>
+#include <xen/netdevice.h>
+#include <xen/ioport.h>
+#include <xen/slab.h>
+//#include <xen/pagemap.h>
+#include <xen/list.h>
+#include <xen/sched.h>
 #include <asm/io.h>
 
 #ifndef IRQ_HANDLED
@@ -296,7 +296,7 @@ static inline void _kc_synchronize_irq() { synchronize_irq(); }
 #undef synchronize_irq
 #define synchronize_irq(X) _kc_synchronize_irq()
 
-#include <xeno/tqueue.h>
+#include <xen/tqueue.h>
 #define work_struct tq_struct
 #define INIT_WORK INIT_TQUEUE
 #define schedule_work schedule_task
index 515d83411c8db59f8888ffbcf260c79b022becb5..c3fef3633a165411edec9ab0a91d24ef38baaa1a 100644 (file)
 
 */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/errno.h>
-//#include <xeno/kernel.h>
-#include <xeno/sched.h>
-#include <xeno/types.h>
-//#include <xeno/fs.h>
-#include <xeno/slab.h>
-#include <xeno/if_ether.h>
-#include <xeno/lib.h>
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
-//#include <xeno/fddidevice.h>
-//#include <xeno/hippidevice.h>
-//#include <xeno/trdevice.h>
-//#include <xeno/fcdevice.h>
-//#include <xeno/if_arp.h>
-//#include <xeno/if_ltalk.h>
-//#include <xeno/rtnetlink.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/errno.h>
+//#include <xen/kernel.h>
+#include <xen/sched.h>
+#include <xen/types.h>
+//#include <xen/fs.h>
+#include <xen/slab.h>
+#include <xen/if_ether.h>
+#include <xen/lib.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
+//#include <xen/fddidevice.h>
+//#include <xen/hippidevice.h>
+//#include <xen/trdevice.h>
+//#include <xen/fcdevice.h>
+//#include <xen/if_arp.h>
+//#include <xen/if_ltalk.h>
+//#include <xen/rtnetlink.h>
 //#include <net/neighbour.h>
 
 #define rtnl_lock() ((void)0)
index ebc49f47e44398072a221b9c920d5257d667f343..dad41fc9edeca1dfe3d5f6c258117d2eec730ebd 100644 (file)
 static const char *version =
 DRV_NAME ".c:v" DRV_VERSION " " DRV_RELDATE " tsbogend@alpha.franken.de\n";
 
-#include <xeno/module.h>
-
-#include <xeno/kernel.h>
-#include <xeno/sched.h>
-#include <xeno/string.h>
-#include <xeno/errno.h>
-#include <xeno/ioport.h>
-#include <xeno/slab.h>
-#include <xeno/interrupt.h>
-#include <xeno/pci.h>
-#include <xeno/delay.h>
-#include <xeno/init.h>
-#include <xeno/ethtool.h>
-#include <xeno/mii.h>
-#include <xeno/crc32.h>
+#include <xen/module.h>
+
+#include <xen/kernel.h>
+#include <xen/sched.h>
+#include <xen/string.h>
+#include <xen/errno.h>
+#include <xen/ioport.h>
+#include <xen/slab.h>
+#include <xen/interrupt.h>
+#include <xen/pci.h>
+#include <xen/delay.h>
+#include <xen/init.h>
+#include <xen/ethtool.h>
+#include <xen/mii.h>
+#include <xen/crc32.h>
 #include <asm/bitops.h>
 #include <asm/io.h>
 #include <asm/dma.h>
 #include <asm/uaccess.h>
 
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
-#include <xeno/skbuff.h>
-#include <xeno/spinlock.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
+#include <xen/skbuff.h>
+#include <xen/spinlock.h>
 
 #undef TX_RING_SIZE
 #undef RX_RING_SIZE
index 8ea35dc9a6020cd74c4523fb9729f61e88b551a2..5e3b6b3ac105b8baef1a34439ea012e7d84bcd78 100644 (file)
@@ -3,11 +3,11 @@
  *     New style setup code for the network devices
  */
  
-#include <xeno/config.h>
-#include <xeno/netdevice.h>
-#include <xeno/errno.h>
-#include <xeno/init.h>
-//#include <xeno/netlink.h>
+#include <xen/config.h>
+#include <xen/netdevice.h>
+#include <xen/errno.h>
+#include <xen/init.h>
+//#include <xen/netlink.h>
 
 extern int slip_init_ctrl_dev(void);
 extern int x25_asy_init_ctrl_dev(void);
index d9a87b06f41633a3bb99070f75d2dc7be5c2a4ef..8be868e9b9f89443899f3c76202c537853a01338 100644 (file)
@@ -5,27 +5,27 @@
  * Copyright (C) 2001, 2002, 2003 Jeff Garzik (jgarzik@pobox.com)
  */
 
-#include <xeno/config.h>
-
-#include <xeno/module.h>
-
-#include <xeno/kernel.h>
-#include <xeno/types.h>
-#include <xeno/tqueue.h> // Xen
-#include <xeno/compiler.h>
-#include <xeno/slab.h>
-#include <xeno/delay.h>
-#include <xeno/init.h>
-#include <xeno/ioport.h>
-#include <xeno/pci.h>
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
-#include <xeno/skbuff.h>
-#include <xeno/ethtool.h>
-#include <xeno/mii.h>
-#include <xeno/if_vlan.h>
-//#include <xeno/ip.h>
-//#include <xeno/tcp.h>
+#include <xen/config.h>
+
+#include <xen/module.h>
+
+#include <xen/kernel.h>
+#include <xen/types.h>
+#include <xen/tqueue.h> // Xen
+#include <xen/compiler.h>
+#include <xen/slab.h>
+#include <xen/delay.h>
+#include <xen/init.h>
+#include <xen/ioport.h>
+#include <xen/pci.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
+#include <xen/skbuff.h>
+#include <xen/ethtool.h>
+#include <xen/mii.h>
+#include <xen/if_vlan.h>
+//#include <xen/ip.h>
+//#include <xen/tcp.h>
 
 //#include <net/checksum.h>
 
index f13fd4b94eeda19bcc66ab57830d92cacdb7d17e..e237590103c1408241cd05965d3db52e1ba169de 100644 (file)
@@ -15,8 +15,8 @@
 */
 
 #include "tulip.h"
-#include <xeno/pci.h>
-#include <xeno/delay.h>
+#include <xen/pci.h>
+#include <xen/delay.h>
 
 
 static u16 t21142_csr13[] = { 0x0001, 0x0009, 0x0009, 0x0000, 0x0001, };
index 76458b45025e62f555ca7bcdbcdff66a64d64dad..e7f39a7a1440651035ef1eeff5f80d043e3c660e 100644 (file)
@@ -15,7 +15,7 @@
 */
 
 #include "tulip.h"
-#include <xeno/init.h>
+#include <xen/init.h>
 #include <asm/unaligned.h>
 
 
index 4a3b5fe5ab02d71cd4c16d39ac30a710e97edc45..330b06cb98a8fbc57d1921a94d6d039a2855660d 100644 (file)
@@ -15,9 +15,9 @@
 */
 
 #include "tulip.h"
-#include <xeno/config.h>
-#include <xeno/etherdevice.h>
-#include <xeno/pci.h>
+#include <xen/config.h>
+#include <xen/etherdevice.h>
+#include <xen/pci.h>
 
 
 int tulip_rx_copybreak;
index 9a8bc3574e41b52637f83be2faf3e22318063e7e..e9bf8b2bfc38d797d288b44d5cf901e6e2860e08 100644 (file)
 
 */
 
-#include <xeno/kernel.h>
-#include <xeno/mii.h>
-#include <xeno/init.h>
-#include <xeno/delay.h>
+#include <xen/kernel.h>
+#include <xen/mii.h>
+#include <xen/init.h>
+#include <xen/delay.h>
 #include "tulip.h"
 
 
index 74d0ba00f151bb612a1c0a6c12615a35f6516fe9..271c223dd0ee8314b657e3f73c81511eae7eb312 100644 (file)
@@ -14,7 +14,7 @@
 
 */
 
-#include <xeno/kernel.h>
+#include <xen/kernel.h>
 #include "tulip.h"
 
 
index 0d9e35236f7c0c7bab7c5d35f273d996fe6fc1cc..140c919caa1cfa5129920fae1b3f5b55c0b878bb 100644 (file)
@@ -77,8 +77,8 @@
 
 
 #include "tulip.h"
-#include <xeno/pci.h>
-#include <xeno/delay.h>
+#include <xen/pci.h>
+#include <xen/delay.h>
 
 
 void pnic2_timer(unsigned long data)
index 24e37c45002c2f1d477e37827fa9253aaf1b2873..79a3788532a9f3abf48feae5ece31a2f25f1cdab 100644 (file)
 #ifndef __NET_TULIP_H__
 #define __NET_TULIP_H__
 
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/types.h>
-#include <xeno/spinlock.h>
-#include <xeno/netdevice.h>
-#include <xeno/timer.h>
-#include <xeno/delay.h>
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/types.h>
+#include <xen/spinlock.h>
+#include <xen/netdevice.h>
+#include <xen/timer.h>
+#include <xen/delay.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 
index 3163c13d2eec3e48e9d628218bd6d49491928fe6..0c46cf191bfd13ef6f4659c18fbb6281b2fc1946 100644 (file)
 #define DRV_VERSION    "0.9.15-pre12"
 #define DRV_RELDATE    "Aug 9, 2002"
 
-#include <xeno/config.h>
-#include <xeno/module.h>
+#include <xen/config.h>
+#include <xen/module.h>
 #include "tulip.h"
-#include <xeno/pci.h>
-#include <xeno/init.h>
-#include <xeno/etherdevice.h>
-#include <xeno/delay.h>
-#include <xeno/mii.h>
-#include <xeno/ethtool.h>
-#include <xeno/crc32.h>
+#include <xen/pci.h>
+#include <xen/init.h>
+#include <xen/etherdevice.h>
+#include <xen/delay.h>
+#include <xen/mii.h>
+#include <xen/ethtool.h>
+#include <xen/crc32.h>
 #include <asm/unaligned.h>
 #include <asm/uaccess.h>
 
index 795ce8d0f1c1d515d14147f6368ca461926fd7b1..61e14b0a8414dc61fd2831b57286d9d6c72e3eaf 100644 (file)
@@ -6,9 +6,9 @@
  *     Copyright 1998--2000 Martin Mares <mj@ucw.cz>
  */
 
-#include <xeno/types.h>
-//#include <xeno/kernel.h>
-#include <xeno/pci.h>
+#include <xen/types.h>
+//#include <xen/kernel.h>
+#include <xen/pci.h>
 
 int
 pcibios_present(void)
index db4b8d569624a055fed4b7425d1fae1284887473..efb95b8d0cb58a955056d3f37add747641699869 100644 (file)
@@ -5,11 +5,11 @@
  *     David Mosberger-Tang, Martin Mares
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-/*#include <xeno/kernel.h>*/
-#include <xeno/pci.h>
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/types.h>
+/*#include <xen/kernel.h>*/
+#include <xen/pci.h>
+#include <xen/init.h>
 
 #ifdef CONFIG_PCI_NAMES
 
index 41834c2b8c16ab197e0b8fc93194758108c96b30..c6e9c47ad82ba1f54da126f53bf03ab51a00da8a 100644 (file)
@@ -9,17 +9,17 @@
  *     Copyright 1997 -- 2000 Martin Mares <mj@ucw.cz>
  */
 
-#include <xeno/config.h>
-#include <xeno/sched.h>
-#include <xeno/module.h>
-#include <xeno/types.h>
-#include <xeno/pci.h>
-#include <xeno/init.h>
-#include <xeno/slab.h>
-#include <xeno/ioport.h>
-#include <xeno/spinlock.h>
-#include <xeno/delay.h>
-#include <xeno/cache.h>
+#include <xen/config.h>
+#include <xen/sched.h>
+#include <xen/module.h>
+#include <xen/types.h>
+#include <xen/pci.h>
+#include <xen/init.h>
+#include <xen/slab.h>
+#include <xen/ioport.h>
+#include <xen/spinlock.h>
+#include <xen/delay.h>
+#include <xen/cache.h>
 #include <asm/page.h>
 
 #undef DEBUG
index a6c98046e326ca2ff49d4bb6f14832d1fea0f21e..32e091904701e95186f45a2649b58b9d7751c79c 100644 (file)
@@ -6,12 +6,12 @@
  *     Copyright (c) 1997--1999 Martin Mares <mj@ucw.cz>
  */
 
-#include <xeno/types.h>
-#include <xeno/kernel.h>
-#include <xeno/pci.h>
-#include <xeno/proc_fs.h>
-#include <xeno/init.h>
-#include <xeno/seq_file.h>
+#include <xen/types.h>
+#include <xen/kernel.h>
+#include <xen/pci.h>
+#include <xen/proc_fs.h>
+#include <xen/init.h>
+#include <xen/seq_file.h>
 
 #include <asm/uaccess.h>
 #include <asm/byteorder.h>
index b3f4138800d291a9f9c4c0d531eba06d0a1022e5..b20acce3f2f7fa647aa0ff63cb69452aae35bb11 100644 (file)
  *  use the PowerTweak utility (see http://powertweak.sourceforge.net).
  */
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/lib.h>
-#include <xeno/pci.h>
-#include <xeno/init.h>
-#include <xeno/delay.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/lib.h>
+#include <xen/pci.h>
+#include <xen/init.h>
+#include <xen/delay.h>
 
 #undef DEBUG
 
index 0790d96684ae1bd4852bc86635e7a2b36d2a7738..a5037669e32b6e74199fe827e73561905ff27d6c 100644 (file)
  *          tighter packing. Prefetchable range support.
  */
 
-#include <xeno/init.h>
-#include <xeno/kernel.h>
-#include <xeno/pci.h>
-#include <xeno/errno.h>
-#include <xeno/ioport.h>
-#include <xeno/cache.h>
-#include <xeno/slab.h>
+#include <xen/init.h>
+#include <xen/kernel.h>
+#include <xen/pci.h>
+#include <xen/errno.h>
+#include <xen/ioport.h>
+#include <xen/cache.h>
+#include <xen/slab.h>
 
 
 #define DEBUG_CONFIG 1
index dae3b502ad01055e637c525687b0f8565cc25cc2..919913b94db3cd6c5523f8011db253c950c29bd4 100644 (file)
  */
 
 
-#include <xeno/init.h>
-#include <xeno/kernel.h>
-#include <xeno/pci.h>
-#include <xeno/errno.h>
-#include <xeno/ioport.h>
-#include <xeno/cache.h>
+#include <xen/init.h>
+#include <xen/kernel.h>
+#include <xen/pci.h>
+#include <xen/errno.h>
+#include <xen/ioport.h>
+#include <xen/cache.h>
 
 
 #define DEBUG_CONFIG 0
index 5c36a6f443252ba34a7b13e9343842a4e5d3f0f4..fdd85c9f13651598386612403678c13fa7533d89 100644 (file)
  *          Resource sorting
  */
 
-#include <xeno/init.h>
-#include <xeno/lib.h>
-#include <xeno/pci.h>
-#include <xeno/errno.h>
-#include <xeno/ioport.h>
-#include <xeno/cache.h>
-#include <xeno/slab.h>
+#include <xen/init.h>
+#include <xen/lib.h>
+#include <xen/pci.h>
+#include <xen/errno.h>
+#include <xen/ioport.h>
+#include <xen/cache.h>
+#include <xen/slab.h>
 
 
 #define DEBUG_CONFIG 0
index 8a534610c88aa33ecbf5d29cb73cd227f8cc91ab..d55c52e835864dcc456ae4522a7cf67198355347 100644 (file)
@@ -7,10 +7,10 @@
  * magic northbridge registers..
  */
 
-#include <xeno/sched.h>
-#include <xeno/errno.h>
-#include <xeno/pci.h>
-#include <xeno/smp_lock.h>
+#include <xen/sched.h>
+#include <xen/errno.h>
+#include <xen/pci.h>
+#include <xen/smp_lock.h>
 #include <asm/uaccess.h>
 
 
index 86263ee1e95f9befde69b746b1b6ec890cce36a2..8005d015fc5d8e74e3b795163685ee4e5b0afec9 100644 (file)
 #define BusLogic_DriverDate            "17 August 1998"
 
 
-#include <xeno/version.h>
-#include <xeno/module.h>
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/blk.h>
-#include <xeno/blkdev.h>
-#include <xeno/delay.h>
-#include <xeno/ioport.h>
-#include <xeno/mm.h>
-#include <xeno/sched.h>
-/*#include <xeno/stat.h>*/
-#include <xeno/pci.h>
-#include <xeno/spinlock.h>
+#include <xen/version.h>
+#include <xen/module.h>
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/blk.h>
+#include <xen/blkdev.h>
+#include <xen/delay.h>
+#include <xen/ioport.h>
+#include <xen/mm.h>
+#include <xen/sched.h>
+/*#include <xen/stat.h>*/
+#include <xen/pci.h>
+#include <xen/spinlock.h>
 #include <asm/dma.h>
 #include <asm/io.h>
 #include <asm/system.h>
index 5196ccf66f6b0febf06ea767a3e601dda228204b..2e1c2bfc75cf59d64f14518dcbb9020328215653 100644 (file)
@@ -26,7 +26,7 @@
 */
 
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 
 /*
index bd473a977fc40f78c27bcdfd212c85fbcd04051f..1416284e84d8c06d88bf66a80e0c865954a21ba0 100644 (file)
@@ -16,7 +16,7 @@
 */
 
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 
 #ifndef CONFIG_SCSI_OMIT_FLASHPOINT
index 0329cb06652aca02212bc650f86e3922c798025c..41aefb792505cae791b0cfd7af368aa2ccf43caa 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/spinlock.h>
-#include <xeno/slab.h>
-/*#include <xeno/completion.h>*/
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/spinlock.h>
+#include <xen/slab.h>
+/*#include <xen/completion.h>*/
 /*#include <asm/semaphore.h>*/
 #include <asm/uaccess.h>
 #define MAJOR_NR SCSI_DISK0_MAJOR      /* For DEVICE_NR() */
-#include <xeno/blk.h>
+#include <xen/blk.h>
 #include "scsi.h"
 #include "hosts.h"
 #include "sd.h"
index ecf56413cdb7ffa20b5e24d3c93348c7732763b8..da59eee2fcec4d262091fd14ca0279427759599f 100644 (file)
@@ -4,7 +4,7 @@
 #endif
 
 #include <asm/byteorder.h>
-#include <xeno/interrupt.h>
+#include <xen/interrupt.h>
 
 /*------------------------------------------------------------------------------
  *              D E F I N E S
index 0572c3b0480a1591ecf20035702d472d5800eae3..bf4d92a2ff923980e529def02253906b3db95d39 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/spinlock.h>
-#include <xeno/slab.h>
-/*#include <xeno/completion.h>*/
-#include <xeno/blk.h>
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/spinlock.h>
+#include <xen/slab.h>
+/*#include <xen/completion.h>*/
+#include <xen/blk.h>
 /*#include <asm/semaphore.h>*/
 #include <asm/uaccess.h>
 #include "scsi.h"
index c58d67b9b41c29a163f0c8e658b2450aecd0d886..991bcb4225bf33b1d1256c9097f89639f7f5e4de 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/spinlock.h>
-#include <xeno/slab.h>
-#include <xeno/blk.h>
-/*#include <xeno/completion.h>*/
-#include <xeno/mm.h>
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/spinlock.h>
+#include <xen/slab.h>
+#include <xen/blk.h>
+/*#include <xen/completion.h>*/
+#include <xen/mm.h>
 /*#include <asm/semaphore.h>*/
 #include "scsi.h"
 #include "hosts.h"
index 2238dcee19af3a0c8d112bb1d5e4094946732f39..c44465cf6dc56fec6ed7e7842c06a6f0e759a2cd 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/spinlock.h>
-#include <xeno/slab.h>
-/*#include <xeno/completion.h>*/
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/spinlock.h>
+#include <xen/slab.h>
+/*#include <xen/completion.h>*/
 /*#include <asm/semaphore.h>*/
-#include <xeno/blk.h>
+#include <xen/blk.h>
 #include <asm/uaccess.h>
 
-#include <xeno/interrupt.h>
-#include <xeno/delay.h>
+#include <xen/interrupt.h>
+#include <xen/delay.h>
 
 #include "scsi.h"
 #include "hosts.h"
index dd5865ca4b4b6f4e0f17ef8ee59fcfa065881458..952166d53268201ef5576c831d199abf0acc0b28 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/spinlock.h>
-#include <xeno/slab.h>
-/*#include <xeno/completion.h>*/
-#include <xeno/blk.h>
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/spinlock.h>
+#include <xen/slab.h>
+/*#include <xen/completion.h>*/
+#include <xen/blk.h>
 /*#include <asm/semaphore.h>*/
 #include "scsi.h"
 #include "hosts.h"
index b68c1a4a5c9d60f87c2b6105a2094c244f80bb21..17d1fc26354ec494ec747fd02a07d2f03ce5b5fb 100644 (file)
 #define AAC_DRIVER_VERSION             "1.1.2"
 #define AAC_DRIVER_BUILD_DATE          __DATE__ " " __TIME__
 
-#include <xeno/module.h>
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/spinlock.h>
-#include <xeno/slab.h>
-/*#include <xeno/completion.h>*/
+#include <xen/module.h>
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/spinlock.h>
+#include <xen/slab.h>
+/*#include <xen/completion.h>*/
 /*#include <asm/semaphore.h>*/
-#include <xeno/blk.h>
+#include <xen/blk.h>
 #include "scsi.h"
 #include "hosts.h"
 
index 2a545437d7331eb59c2c3190b9f7fa53375049de..87e24b9af8d3ed7c127051c408ad2f8a11e750c3 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/spinlock.h>
-#include <xeno/slab.h>
-#include <xeno/blk.h>
-#include <xeno/delay.h>
-/*#include <xeno/completion.h>*/
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/spinlock.h>
+#include <xen/slab.h>
+#include <xen/blk.h>
+#include <xen/delay.h>
+/*#include <xen/completion.h>*/
 /*#include <asm/semaphore.h>*/
 #include "scsi.h"
 #include "hosts.h"
index 8ea49df6a4bd666e9d85b3d98c88a15409371c97..125d763c29fb850897928b56e0b5cea7b28277b5 100644 (file)
  *
  */
 
-#include <xeno/config.h>
-#include <xeno/kernel.h>
-#include <xeno/init.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/pci.h>
-#include <xeno/spinlock.h>
-#include <xeno/slab.h>
-#include <xeno/blk.h>
-#include <xeno/delay.h>
-/*#include <xeno/completion.h>*/
+#include <xen/config.h>
+#include <xen/kernel.h>
+#include <xen/init.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/pci.h>
+#include <xen/spinlock.h>
+#include <xen/slab.h>
+#include <xen/blk.h>
+#include <xen/delay.h>
+/*#include <xen/completion.h>*/
 /*#include <asm/semaphore.h>*/
 #include "scsi.h"
 #include "hosts.h"
index a69fbbdbecebf844b62f3196affb31f8d3f62999..25687afd4a9755551d1092136ee1237d5c025939 100644 (file)
 #include "aic79xx_inline.h"
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
-#include <xeno/init.h>         /* __setup */
+#include <xen/init.h>          /* __setup */
 #endif
 
 #include "../sd.h"             /* For geometry detection */
 
-#include <xeno/mm.h>           /* For fetching system memory size */
+#include <xen/mm.h>            /* For fetching system memory size */
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
 /*
@@ -648,8 +648,8 @@ ahd_runq_tasklet(unsigned long data)
 }
 
 /************************ Shutdown/halt/reboot hook ***************************/
-#include <xeno/notifier.h>
-#include <xeno/reboot.h>
+#include <xen/notifier.h>
+#include <xen/reboot.h>
 /* SAE: */
 /*
 static struct notifier_block ahd_linux_notifier = {
index b739b8c091de5a1e75c74d68b11d6f8ac51ae2fb..6d778e5c00ddfd291eb14ee013886bcc41a961a6 100644 (file)
 #ifndef _AIC79XX_LINUX_H_
 #define _AIC79XX_LINUX_H_
 
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/blk.h>
-#include <xeno/blkdev.h>
-#include <xeno/delay.h>
-#include <xeno/ioport.h>
-#include <xeno/pci.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/blk.h>
+#include <xen/blkdev.h>
+#include <xen/delay.h>
+#include <xen/ioport.h>
+#include <xen/pci.h>
 /* SAE */
 #if XENO_KILLED
-#include <xeno/version.h>
+#include <xen/version.h>
 #endif
 #ifndef AHD_MODVERSION_FILE
 #define __NO_VERSION__
 #endif
-#include <xeno/module.h>
+#include <xen/module.h>
 #include <asm/byteorder.h>
 
 #ifndef KERNEL_VERSION
 #define LINUX_VERSION_CODE KERNEL_VERSION(2,4,0)
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
-#include <xeno/interrupt.h> /* For tasklet support. */
-#include <xeno/config.h>
-#include <xeno/slab.h>
+#include <xen/interrupt.h> /* For tasklet support. */
+#include <xen/config.h>
+#include <xen/slab.h>
 #else
-#include <xeno/malloc.h>
+#include <xen/malloc.h>
 #endif
 
 /* Core SCSI definitions */
@@ -440,12 +440,12 @@ ahd_timer_reset(ahd_timer_t *timer, int usec, ahd_callback_t *func, void *arg)
 
 /***************************** SMP support ************************************/
 /* SAE */
-#include <xeno/spinlock.h>
+#include <xen/spinlock.h>
 /*
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,17)
-#include <xeno/spinlock.h>
+#include <xen/spinlock.h>
 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,93)
-#include <xeno/smp.h>
+#include <xen/smp.h>
 #endif
 */
 
@@ -1016,7 +1016,7 @@ void ahd_power_state_change(struct ahd_softc *ahd,
 #if defined(__sparc_v9__) || defined(__powerpc__)
 #error "PPC and Sparc platforms are only support under 2.1.92 and above"
 #endif
-#include <xeno/bios32.h>
+#include <xen/bios32.h>
 #endif
 
 int                     ahd_linux_pci_probe(Scsi_Host_Template *);
index 4f4ce01c4a43f7b8dc479fac5f7a6b614256cde2..6bb0b2a01a587a09fe335c8c3ed236eac4b96496 100644 (file)
  */
 //#define AHC_MODVERSION_FILE
 
-#include <xeno/lib.h>
-#include <xeno/string.h>
+#include <xen/lib.h>
+#include <xen/string.h>
 #include "aic7xxx_osm.h"
 #include "aic7xxx_inline.h"
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
-#include <xeno/init.h>         /* __setup */
+#include <xen/init.h>          /* __setup */
 #endif
 
 #include "../sd.h"             /* For geometry detection */
 
-#include <xeno/mm.h>           /* For fetching system memory size */
-#include <xeno/blk.h>          /* For block_size() */
+#include <xen/mm.h>            /* For fetching system memory size */
+#include <xen/blk.h>           /* For block_size() */
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
 /*
@@ -718,8 +718,8 @@ ahc_runq_tasklet(unsigned long data)
 }
 
 /************************ Shutdown/halt/reboot hook ***************************/
-#include <xeno/notifier.h>
-#include <xeno/reboot.h>
+#include <xen/notifier.h>
+#include <xen/reboot.h>
 
 #if XENO_KILLED
 static struct notifier_block ahc_linux_notifier = {
@@ -1141,7 +1141,7 @@ ahc_linux_detect(Scsi_Host_Template *template)
                aic7xxx_setup(aic7xxx);
        if (dummy_buffer[0] != 'P')
                printf(KERN_WARNING
-"aic7xxx: Please read the file /usr/src/xeno/drivers/scsi/README.aic7xxx\n"
+"aic7xxx: Please read the file /usr/src/xen/drivers/scsi/README.aic7xxx\n"
 "aic7xxx: to see the proper way to specify options to the aic7xxx module\n"
 "aic7xxx: Specifically, don't use any commas when passing arguments to\n"
 "aic7xxx: insmod or else it might trash certain memory areas.\n");
index b1a84e7d628be83e10337dbff795f9e3561ba678..de08fafafbb03e50a55605494712ec282dd6a212 100644 (file)
 
 #ifndef _AIC7XXX_LINUX_H_
 #define _AIC7XXX_LINUX_H_
-#include <xeno/lib.h>
-#include <xeno/string.h>
-#include <xeno/types.h>
-#include <xeno/blk.h>
-#include <xeno/blkdev.h>
-#include <xeno/delay.h>
-#include <xeno/ioport.h>
-#include <xeno/pci.h>
-//#include <xeno/version.h>
+#include <xen/lib.h>
+#include <xen/string.h>
+#include <xen/types.h>
+#include <xen/blk.h>
+#include <xen/blkdev.h>
+#include <xen/delay.h>
+#include <xen/ioport.h>
+#include <xen/pci.h>
+//#include <xen/version.h>
 #ifndef AHC_MODVERSION_FILE
 #define __NO_VERSION__
 #endif
-#include <xeno/module.h>
+#include <xen/module.h>
 #include <asm/byteorder.h>
-#include <xeno/notifier.h>
+#include <xen/notifier.h>
 
 #ifndef KERNEL_VERSION
 #define KERNEL_VERSION(x,y,z) (((x)<<16)+((y)<<8)+(z))
 #define LINUX_VERSION_CODE KERNEL_VERSION(2,4,20)
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
-#include <xeno/interrupt.h> /* For tasklet support. */
-#include <xeno/config.h>
-#include <xeno/slab.h>
+#include <xen/interrupt.h> /* For tasklet support. */
+#include <xen/config.h>
+#include <xen/slab.h>
 #else
-#include <xeno/malloc.h>
+#include <xen/malloc.h>
 #endif
 
 /* Core SCSI definitions */
@@ -409,9 +409,9 @@ struct scsi_inquiry_data
 
 /* SMP support */
 //#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,17)
-#include <xeno/spinlock.h>
+#include <xen/spinlock.h>
 //#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,93)
-//#include <xeno/smp.h>
+//#include <xen/smp.h>
 //#endif
 
 #define AIC7XXX_DRIVER_VERSION  "6.2.8"
@@ -926,7 +926,7 @@ int                  aic7770_map_int(struct ahc_softc *ahc, u_int irq);
 #if defined(__sparc_v9__) || defined(__powerpc__)
 #error "PPC and Sparc platforms are only support under 2.1.92 and above"
 #endif
-#include <xeno/bios32.h>
+#include <xen/bios32.h>
 #endif
 
 int                     ahc_linux_pci_probe(Scsi_Host_Template *);
index 6399a11e5a7cc9f8b790b77fbbb6529d4c57cdd5..4a72d6ca47871da874514ea64c07e470c293a54d 100644 (file)
@@ -6,11 +6,11 @@
  */
 
 #define __NO_VERSION__
-#include <xeno/module.h>
+#include <xen/module.h>
 
-#include <xeno/config.h>
-#include <xeno/blk.h>
-/*#include <xeno/kernel.h> */
+#include <xen/config.h>
+#include <xen/blk.h>
+/*#include <xen/kernel.h> */
 #include "scsi.h"
 #include "hosts.h"
 
index ea613aaa47255530e5208fd753594f706be548b5..3abbeed15c48caa58b3df7cf4e625cd2a425dd1f 100644 (file)
  */
 
 #define __NO_VERSION__
-#include <xeno/module.h>
-#include <xeno/blk.h>
-/*  #include <xeno/kernel.h> */
-/*  #include <xeno/string.h> */
-/*  #include <xeno/mm.h> */
-/*  #include <xeno/proc_fs.h> */
-#include <xeno/init.h>
+#include <xen/module.h>
+#include <xen/blk.h>
+/*  #include <xen/kernel.h> */
+/*  #include <xen/string.h> */
+/*  #include <xen/mm.h> */
+/*  #include <xen/proc_fs.h> */
+#include <xen/init.h>
 
 #define __KERNEL_SYSCALLS__
 
-/* #include <xeno/unistd.h> */
+/* #include <xen/unistd.h> */
 
 #include "scsi.h"
 #include "hosts.h"
index 34d3592e0e7487c8b0ec2565a6b36b755338fcfb..77ee019eb8dbf83b6eb7df4ae86c739f4d76707c 100644 (file)
@@ -25,9 +25,9 @@
     $Header: /vger/u4/cvs/linux/drivers/scsi/hosts.h,v 1.6 1997/01/19 23:07:13 davem Exp $
 */
 
-#include <xeno/config.h>
-/*#include <xeno/proc_fs.h>*/
-#include <xeno/pci.h>
+#include <xen/config.h>
+/*#include <xen/proc_fs.h>*/
+#include <xen/pci.h>
 
 /* It is senseless to set SG_ALL any higher than this - the performance
  *  does not get any better, and it wastes memory
index 89d9cec74457286a886a0f9fad029fe326b7ed4e..e12bc4c57b03f2df59a091dc2cce7de0ddf20ba8 100644 (file)
  *===================================================================*/
 
 
-#include <xeno/config.h>
-#include <xeno/version.h>
-#include <xeno/module.h>
-#include <xeno/types.h>
-#include <xeno/errno.h>
-#include <xeno/string.h>
-#include <xeno/lib.h>
-#include <xeno/kernel.h>
-#include <xeno/ioport.h>
-//#include <xeno/fcntl.h>
-#include <xeno/delay.h>
-#include <xeno/pci.h>
-//#include <xeno/proc_fs.h>
-#include <xeno/blk.h>
-//#include <xeno/wait.h>
-#include <xeno/tqueue.h>
-#include <xeno/interrupt.h>
-#include <xeno/mm.h>
+#include <xen/config.h>
+#include <xen/version.h>
+#include <xen/module.h>
+#include <xen/types.h>
+#include <xen/errno.h>
+#include <xen/string.h>
+#include <xen/lib.h>
+#include <xen/kernel.h>
+#include <xen/ioport.h>
+//#include <xen/fcntl.h>
+#include <xen/delay.h>
+#include <xen/pci.h>
+//#include <xen/proc_fs.h>
+#include <xen/blk.h>
+//#include <xen/wait.h>
+#include <xen/tqueue.h>
+#include <xen/interrupt.h>
+#include <xen/mm.h>
 //#include <asm/pgtable.h>
 
 #include <asm/ioctl.h>
-#include <xeno/sched.h>
-//#include <xeno/stat.h>
-#include <xeno/slab.h> /* for kmalloc() */
+#include <xen/sched.h>
+//#include <xen/stat.h>
+#include <xen/slab.h>  /* for kmalloc() */
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0) /* 0x20100 */
-#include <xeno/bios32.h>
+#include <xen/bios32.h>
 #else
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) /* 0x20300 */
 #include <asm/spinlock.h>
 #else
-#include <xeno/spinlock.h>
+#include <xen/spinlock.h>
 #endif
 #endif
 
 /*
  * These header files are required for Shutdown Notification routines
  */
-#include <xeno/notifier.h>
-#include <xeno/reboot.h>
-#include <xeno/init.h>
+#include <xen/notifier.h>
+#include <xen/reboot.h>
+#include <xen/init.h>
 
 #include "sd.h"
 #include "scsi.h"
@@ -599,7 +599,7 @@ static void WROUTDOOR (mega_host_config * megaCfg, ulong value)
 }
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)        /* 0x020200 */
-#include <xeno/smp.h>
+#include <xen/smp.h>
 #define cpuid smp_processor_id()
 #endif
 
index e55702bd1f6d774a0461f3d691a1c3e8133fd4a4..7e595567d15cc89245e5ca0585aa9f0225cdc71d 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __MEGARAID_H__
 #define __MEGARAID_H__
 
-#include <xeno/version.h>
+#include <xen/version.h>
 
 /*
  * For state flag. Do not use LSB(8 bits) which are
index d19d16b7629bcbfaaaabc2609edee5948aaad185..7b586ca7e106060658d142e7575715d5c5ff828b 100644 (file)
 #define REVISION       "Revision: 1.00"
 #define VERSION                "Id: scsi.c 1.00 2000/09/26"
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-
-#include <xeno/sched.h>
-#include <xeno/timer.h>
-#include <xeno/lib.h>
-#include <xeno/slab.h>
-#include <xeno/ioport.h>
-/*#include <xeno/stat.h>*/
-#include <xeno/blk.h>
-#include <xeno/interrupt.h>
-#include <xeno/delay.h>
-#include <xeno/init.h>
-/*#include <xeno/smp_lock.h>*/
-/*#include <xeno/completion.h>*/
-
-/* for xeno scsi_probe() stuff... maybe punt somewhere else? */
+#include <xen/config.h>
+#include <xen/module.h>
+
+#include <xen/sched.h>
+#include <xen/timer.h>
+#include <xen/lib.h>
+#include <xen/slab.h>
+#include <xen/ioport.h>
+/*#include <xen/stat.h>*/
+#include <xen/blk.h>
+#include <xen/interrupt.h>
+#include <xen/delay.h>
+#include <xen/init.h>
+/*#include <xen/smp_lock.h>*/
+/*#include <xen/completion.h>*/
+
+/* for xen scsi_probe() stuff... maybe punt somewhere else? */
 #include <hypervisor-ifs/block.h>
-#include <xeno/blkdev.h>
+#include <xen/blkdev.h>
 
 #define __KERNEL_SYSCALLS__
 
-/*#include <xeno/unistd.h>*/
-#include <xeno/spinlock.h>
+/*#include <xen/unistd.h>*/
+#include <xen/spinlock.h>
 
 #include <asm/system.h>
 #include <asm/irq.h>
@@ -74,7 +74,7 @@
 #include "constants.h"
 
 #ifdef CONFIG_KMOD
-#include <xeno/kmod.h>
+#include <xen/kmod.h>
 #endif
 
 #undef USE_STATIC_SCSI_MEMORY
index b6970238ebadb1528c6ea9cb1b7ac80d3fd5b15b..60c63ea3b511a591a464b5dea98be727be8d97f4 100644 (file)
@@ -15,9 +15,9 @@
 #ifndef _SCSI_H
 #define _SCSI_H
 
-#include <xeno/config.h>       /* for CONFIG_SCSI_LOGGING */
-#include <xeno/timer.h>
-/*#include <xeno/proc_fs.h>*/
+#include <xen/config.h>        /* for CONFIG_SCSI_LOGGING */
+#include <xen/timer.h>
+/*#include <xen/proc_fs.h>*/
 
 /*
  * Some of the public constants are being moved to this file.
@@ -25,7 +25,7 @@
  */
 #include <scsi/scsi.h>
 
-/*#include <xeno/random.h>*/
+/*#include <xen/random.h>*/
 
 #include <asm/hardirq.h>
 #include <asm/scatterlist.h>
@@ -44,7 +44,7 @@
 #define SCSI_DATA_NONE          3
 
 #ifdef CONFIG_PCI
-#include <xeno/pci.h>
+#include <xen/pci.h>
 #if ((SCSI_DATA_UNKNOWN == PCI_DMA_BIDIRECTIONAL) && (SCSI_DATA_WRITE == PCI_DMA_TODEVICE) && (SCSI_DATA_READ == PCI_DMA_FROMDEVICE) && (SCSI_DATA_NONE == PCI_DMA_NONE))
 #define scsi_to_pci_dma_dir(scsi_dir)  ((int)(scsi_dir))
 #else
index 0968ea447e3de12bb4c50816fa16934159f3b6ff..1649f7c641786a86ed5eb2e40bcdc0b89c2ab59a 100644 (file)
@@ -6,9 +6,9 @@
  */
 
 #define __NO_VERSION__
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/blk.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/blk.h>
 
 
 #include "scsi.h"
@@ -16,7 +16,7 @@
 #include "constants.h"
 
 #ifdef CONFIG_KMOD
-#include <xeno/kmod.h>
+#include <xen/kmod.h>
 #endif
 
 /*
index 1287b9a99bd9c74d3d29d82d625e0872d3cb32bd..1313e4785f2652867e65983980d7397df1230528 100644 (file)
@@ -9,23 +9,23 @@
  */
 
 #define __NO_VERSION__
-#include <xeno/module.h>
-
-#include <xeno/sched.h>
-#include <xeno/timer.h>
-/*#include <xeno/string.h>*/
-#include <xeno/slab.h>
-#include <xeno/ioport.h>
-#include <xeno/kernel.h>
-/*#include <xeno/stat.h>*/
-#include <xeno/blk.h>
-#include <xeno/interrupt.h>
-#include <xeno/delay.h>
-/*#include <xeno/smp_lock.h>*/
+#include <xen/module.h>
+
+#include <xen/sched.h>
+#include <xen/timer.h>
+/*#include <xen/string.h>*/
+#include <xen/slab.h>
+#include <xen/ioport.h>
+#include <xen/kernel.h>
+/*#include <xen/stat.h>*/
+#include <xen/blk.h>
+#include <xen/interrupt.h>
+#include <xen/delay.h>
+/*#include <xen/smp_lock.h>*/
 
 #define __KERNEL_SYSCALLS__
 
-/*#include <xeno/unistd.h>*/
+/*#include <xen/unistd.h>*/
 
 #include <asm/system.h>
 #include <asm/irq.h>
index 8cb506a3ead529554982170f78bc6235f428941b..cd8d25ba5bd2abeeccbd6132a38d0230b2e42d4f 100644 (file)
@@ -5,21 +5,21 @@
  *   for the ones that remain
  */
 #define __NO_VERSION__
-#include <xeno/module.h>
+#include <xen/module.h>
 
 #include <asm/io.h>
 #include <asm/uaccess.h>
 #include <asm/system.h>
 #include <asm/page.h>
 
-/*  #include <xeno/interrupt.h> */
-/*  #include <xeno/errno.h> */
-/*  #include <xeno/kernel.h> */
-#include <xeno/sched.h>
-/*  #include <xeno/mm.h> */
-/*  #include <xeno/string.h> */
+/*  #include <xen/interrupt.h> */
+/*  #include <xen/errno.h> */
+/*  #include <xen/kernel.h> */
+#include <xen/sched.h>
+/*  #include <xen/mm.h> */
+/*  #include <xen/string.h> */
 
-#include <xeno/blk.h>
+#include <xen/blk.h>
 #include "scsi.h"
 #include "hosts.h"
 #include <scsi/scsi_ioctl.h>
index 88421ee8c5178284bdf6328a3b394de7ce9a4c88..748d5da73074292e98bca613e7006495a4fe2dc5 100644 (file)
  */
 
 #define __NO_VERSION__
-#include <xeno/module.h>
-
-#include <xeno/sched.h>
-#include <xeno/timer.h>
-/*  #include <xeno/string.h> */
-/*  #include <xeno/slab.h> */
-/*  #include <xeno/ioport.h> */
-/*  #include <xeno/kernel.h> */
-/*  #include <xeno/stat.h> */
-#include <xeno/blk.h>
-/*  #include <xeno/interrupt.h> */
-/*  #include <xeno/delay.h> */
-/*  #include <xeno/smp_lock.h> */
-/*  #include <xeno/completion.h> */
+#include <xen/module.h>
+
+#include <xen/sched.h>
+#include <xen/timer.h>
+/*  #include <xen/string.h> */
+/*  #include <xen/slab.h> */
+/*  #include <xen/ioport.h> */
+/*  #include <xen/kernel.h> */
+/*  #include <xen/stat.h> */
+#include <xen/blk.h>
+/*  #include <xen/interrupt.h> */
+/*  #include <xen/delay.h> */
+/*  #include <xen/smp_lock.h> */
+/*  #include <xen/completion.h> */
 
 
 #define __KERNEL_SYSCALLS__
 
-/* #include <xeno/unistd.h> */
+/* #include <xen/unistd.h> */
 
 #include <asm/system.h>
 #include <asm/irq.h>
index 4ea7f7e57877322d782c8d30cf09f739eb1bc88a..89207e99ed469f0cdd0b14295d19aa7ad97d07f0 100644 (file)
  */
 
 #define __NO_VERSION__
-#include <xeno/config.h>
-#include <xeno/module.h>
-
-#include <xeno/sched.h>
-#include <xeno/timer.h>
-/*  #include <xeno/string.h> */
-/*  #include <xeno/slab.h> */
-/*  #include <xeno/ioport.h> */
-/*  #include <xeno/kernel.h> */
-/*  #include <xeno/stat.h> */
-#include <xeno/blk.h>
-/*  #include <xeno/interrupt.h> */
-/*  #include <xeno/delay.h> */
-/*  #include <xeno/smp_lock.h> */
+#include <xen/config.h>
+#include <xen/module.h>
+
+#include <xen/sched.h>
+#include <xen/timer.h>
+/*  #include <xen/string.h> */
+/*  #include <xen/slab.h> */
+/*  #include <xen/ioport.h> */
+/*  #include <xen/kernel.h> */
+/*  #include <xen/stat.h> */
+#include <xen/blk.h>
+/*  #include <xen/interrupt.h> */
+/*  #include <xen/delay.h> */
+/*  #include <xen/smp_lock.h> */
 
 
 #define __KERNEL_SYSCALLS__
 
-/*  #include <xeno/unistd.h> */
+/*  #include <xen/unistd.h> */
 
 #include <asm/system.h>
 #include <asm/irq.h>
index e43302189ab5c561e4941d216b687186b8c14f23..30495f643be37b4a490cc940911058ff505e19d0 100644 (file)
@@ -29,8 +29,8 @@
  * scsi_register.
  */
 
-#include <xeno/module.h>
-#include <xeno/init.h>
+#include <xen/module.h>
+#include <xen/init.h>
 
 extern int scsi_register_module(int, void *);
 extern int scsi_unregister_module(int, void *);
index 4ab56522de417c564a96545e4463ad8433a615dc..9cb2d7f30480348143c3482498f825a9058988a3 100644 (file)
  */
 
 #define __NO_VERSION__
-#include <xeno/module.h>
-
-#include <xeno/sched.h>
-#include <xeno/timer.h>
-#include <xeno/string.h>
-#include <xeno/slab.h>
-#include <xeno/ioport.h>
-#include <xeno/kernel.h>
-/*#include <xeno/stat.h>*/
-#include <xeno/blk.h>
-#include <xeno/interrupt.h>
-#include <xeno/delay.h>
+#include <xen/module.h>
+
+#include <xen/sched.h>
+#include <xen/timer.h>
+#include <xen/string.h>
+#include <xen/slab.h>
+#include <xen/ioport.h>
+#include <xen/kernel.h>
+/*#include <xen/stat.h>*/
+#include <xen/blk.h>
+#include <xen/interrupt.h>
+#include <xen/delay.h>
 
 #include <asm/system.h>
 #include <asm/irq.h>
index 41a5f7cc491d1f6e92f08b839ed509df6206bced..9cc4213df7c24a6bb5821bf904948356dc9ed49c 100644 (file)
  * Michael A. Griffith <grif@acm.org>
  */
 
-#include <xeno/config.h>       /* for CONFIG_PROC_FS */
+#include <xen/config.h>        /* for CONFIG_PROC_FS */
 #define __NO_VERSION__
-#include <xeno/module.h>
-
-/*  #include <xeno/string.h> */
-/*  #include <xeno/mm.h> */
-/*  #include <xeno/slab.h> */
-/*  #include <xeno/proc_fs.h> */
-/*  #include <xeno/errno.h> */
-/*  #include <xeno/stat.h> */
-#include <xeno/blk.h>
+#include <xen/module.h>
+
+/*  #include <xen/string.h> */
+/*  #include <xen/mm.h> */
+/*  #include <xen/slab.h> */
+/*  #include <xen/proc_fs.h> */
+/*  #include <xen/errno.h> */
+/*  #include <xen/stat.h> */
+#include <xen/blk.h>
 
 #include <asm/uaccess.h>
 
index ce790c9d11815134e385edcc4ccb96a74108d9cb..01e5489e260225e47e8bb8bece309014592e58bc 100644 (file)
  */
 
 #define __NO_VERSION__
-#include <xeno/module.h>
-
-#include <xeno/sched.h>
-#include <xeno/timer.h>
-/*  #include <xeno/string.h> */
-/*  #include <xeno/slab.h> */
-/*  #include <xeno/ioport.h> */
-/*  #include <xeno/kernel.h> */
-/*  #include <xeno/stat.h> */
-#include <xeno/blk.h>
-/*  #include <xeno/interrupt.h> */
-/*  #include <xeno/delay.h> */
-/*  #include <xeno/smp_lock.h> */
+#include <xen/module.h>
+
+#include <xen/sched.h>
+#include <xen/timer.h>
+/*  #include <xen/string.h> */
+/*  #include <xen/slab.h> */
+/*  #include <xen/ioport.h> */
+/*  #include <xen/kernel.h> */
+/*  #include <xen/stat.h> */
+#include <xen/blk.h>
+/*  #include <xen/interrupt.h> */
+/*  #include <xen/delay.h> */
+/*  #include <xen/smp_lock.h> */
 
 #define __KERNEL_SYSCALLS__
 
-/*#include <xeno/unistd.h>*/
+/*#include <xen/unistd.h>*/
 
 #include <asm/system.h>
 #include <asm/irq.h>
index b48f4fe0047f027a2980b3cca76ec7c60d2477ac..dbcaa16993143a654b7f71192cff82290c885929 100644 (file)
@@ -9,18 +9,18 @@
  */
 
 #define __NO_VERSION__
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/init.h>
 
-#include <xeno/blk.h>
+#include <xen/blk.h>
 
 #include "scsi.h"
 #include "hosts.h"
 #include "constants.h"
 
 #ifdef CONFIG_KMOD
-#include <xeno/kmod.h>
+#include <xen/kmod.h>
 #endif
 
 /* 
index efea5288c06bb9aa49d56dfa5472dad3aa2f14ae..50397a0d89f04c19c9d31c736198567d337a70c2 100644 (file)
@@ -3,17 +3,17 @@
  * a module.
  */
 #define __NO_VERSION__
-#include <xeno/config.h>
-#include <xeno/module.h>
+#include <xen/config.h>
+#include <xen/module.h>
 
-#include <xeno/sched.h>
-#include <xeno/timer.h>
-/*  #include <xeno/string.h> */
-/*  #include <xeno/slab.h> */
-/*  #include <xeno/ioport.h> */
-/*  #include <xeno/kernel.h> */
-#include <xeno/blk.h>
-/* #include <xeno/fs.h> */
+#include <xen/sched.h>
+#include <xen/timer.h>
+/*  #include <xen/string.h> */
+/*  #include <xen/slab.h> */
+/*  #include <xen/ioport.h> */
+/*  #include <xen/kernel.h> */
+#include <xen/blk.h>
+/* #include <xen/fs.h> */
 
 #include <asm/system.h>
 #include <asm/irq.h>
index 7f1ebd33c5d7820cec0a9ebfaaf7fc3ee01e7fcf..dce5cf0c48ab6a46cfbeae55c35ef237ecc5fda5 100644 (file)
 
 #define __NO_VERSION__
 
-#include <xeno/config.h>
-#include <xeno/module.h>
+#include <xen/config.h>
+#include <xen/module.h>
 
 
-/*#include <xeno/fs.h>*/
-/*#include <xeno/genhd.h>*/
-#include <xeno/blk.h>
-/*#include <xeno/kernel.h>*/
+/*#include <xen/fs.h>*/
+/*#include <xen/genhd.h>*/
+#include <xen/blk.h>
+/*#include <xen/kernel.h>*/
 #include <asm/unaligned.h>
 #include "scsi.h"
 #include "hosts.h"
index ab0ecff05b288f3badca6bba21e33b52c095d52a..c0bbe80dc9a5d6cd700e2ef3e17f44e9d88058d9 100644 (file)
  *       Fix problem where removable media could be ejected after sd_open.
  */
 
-#include <xeno/config.h>
-#include <xeno/module.h>
-#include <xeno/sched.h>
-#include <xeno/hdreg.h>
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/module.h>
+#include <xen/sched.h>
+#include <xen/hdreg.h>
+#include <xen/init.h>
 
 #include <asm/uaccess.h>
 #include <asm/system.h>
 #include <asm/io.h>
 
 #define MAJOR_NR SCSI_DISK0_MAJOR
-#include <xeno/blk.h>
-#include <xeno/blkpg.h>
+#include <xen/blk.h>
+#include <xen/blkpg.h>
 #include "scsi.h"
 #include "hosts.h"
 #include "sd.h"
@@ -50,7 +50,7 @@
 #include "constants.h"
 #include <scsi/scsicam.h>      /* must follow "hosts.h" */
 
-#include <xeno/genhd.h>
+#include <xen/genhd.h>
 
 #include <asm/domain_page.h>    /* SMH: for [un_]map_domain_mem() */
 
@@ -1306,7 +1306,7 @@ static void sd_finish()
 ** add the scsi block devices for this domain to a xen_disk_info_t; 
 ** we assume xdi->count points to the first unused place in the array. 
 **
-** XXX SMH: this is a rather gross 'probe' function to allow xeno world 
+** XXX SMH: this is a rather gross 'probe' function to allow xen world 
 ** to grope us; this should really not be in the disk-specific code as 
 ** it should report tapes, CDs, etc. But for now this looks like the 
 ** easiest place to hook it in :-( 
index 8e29445839a0f803c7af83f04692f57169638ae7..b9acfd7add702345202a6f57051e160223967765 100644 (file)
@@ -20,7 +20,7 @@
 #endif
 
 #ifndef _GENDISK_H
-#include <xeno/genhd.h>
+#include <xen/genhd.h>
 #endif
 
 typedef struct scsi_disk {
index 8b649547c8fb92c6aeacad2ec8d25919431955b1..d2f5c584974bceab014894dfcdd08d09a94b9327 100644 (file)
@@ -54,9 +54,9 @@
 #define SYM53C8XX_H
 
 #if !defined(LINUX_VERSION_CODE)
-#include <xeno/version.h>
+#include <xen/version.h>
 #endif
-#include <xeno/config.h>
+#include <xen/config.h>
 
 /*
  *  Compatibility with ncr53c8xx and sym53c8xx configuration options.
index 087de8ec942ae79b2c7b4ad4e0ef43f1dc0ab231..7ea4a53d7b234ea0a2ca962836c9bb1da8dd975b 100644 (file)
@@ -51,7 +51,7 @@
  */
 #define SYM_GLUE_C
 
-#include <xeno/module.h>
+#include <xen/module.h>
 #include "sym_glue.h"
 
 #define NAME53C                "sym53c"
index 78c44ba9d9a1e46d2085e1270768303c8fee4df1..cc40cc84fe05cceb43a33e24def2844afa663615 100644 (file)
@@ -58,7 +58,7 @@
 #endif
 
 #define LinuxVersionCode(v, p, s) (((v)<<16)+((p)<<8)+(s))
-#include <xeno/version.h>
+#include <xen/version.h>
 #if    LINUX_VERSION_CODE < LinuxVersionCode(2, 2, 0)
 #error "This driver requires a kernel version not lower than 2.2.0"
 #endif
 #include <asm/io.h>
 #include <asm/system.h>
 #if LINUX_VERSION_CODE >= LinuxVersionCode(2,3,17)
-#include <xeno/spinlock.h>
+#include <xen/spinlock.h>
 #else
 #include <asm/spinlock.h>
 #endif
-#include <xeno/delay.h>
+#include <xen/delay.h>
 
 /* SAE: Not here... */
 #ifdef XENO_KILLED
-#include <xeno/signal.h>
+#include <xen/signal.h>
 #endif
 
-#include <xeno/sched.h>
-#include <xeno/errno.h>
-#include <xeno/pci.h>
-#include <xeno/string.h>
-#include <xeno/mm.h>
-#include <xeno/ioport.h>
-#include <xeno/time.h>
-#include <xeno/timer.h>
+#include <xen/sched.h>
+#include <xen/errno.h>
+#include <xen/pci.h>
+#include <xen/string.h>
+#include <xen/mm.h>
+#include <xen/ioport.h>
+#include <xen/time.h>
+#include <xen/timer.h>
 /* SAE */
 #ifdef XENO_KILLED
-#include <xeno/stat.h>
+#include <xen/stat.h>
 #endif
 
-#include <xeno/blk.h>
+#include <xen/blk.h>
 
 #ifdef __sparc__
 #  include <asm/irq.h>
 #endif
-#include <xeno/init.h>
+#include <xen/init.h>
 
 #ifndef        __init
 #define        __init
 #include "../constants.h"
 #include "../sd.h"
 
-#include <xeno/types.h>
+#include <xen/types.h>
 
 /*
  *  Define BITS_PER_LONG for earlier linux versions.
index 5fa65fbb196aff29f9f9ab5e0c802adb97daebe9..f2f6f9091d5e51674bf2491e7af3c67181579aad 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __ASM_APIC_H
 #define __ASM_APIC_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/ptrace.h>
 #include <asm/apicdef.h>
 #include <asm/system.h>
index 9dcdca93f7bccbaac226f76f086996aaa38a38d5..c9f2e32763552c40e4facadaba4d19e4a15fc5f2 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __ARCH_I386_ATOMIC__
 #define __ARCH_I386_ATOMIC__
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 /*
  * Atomic operations that C can't guarantee us.  Useful for
index 73bcd8ef5f3f7f098c14bf2b30077379e5953b3d..e98f6b356ffba7b2c9eed4272fa895e92955680c 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright 1992, Linus Torvalds.
  */
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 /*
  * These have to be done with inline assembly: that way the bit-setting
index 74b88b975f8da7d5d297fe62b56e806a66993cb9..3940c63c8ca377de8af56ce9f0af7b405bafd8d1 100644 (file)
@@ -7,7 +7,7 @@
 
 /* For avoiding bswap on i386 */
 #ifdef __KERNEL__
-#include <xeno/config.h>
+#include <xen/config.h>
 #endif
 
 static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
@@ -42,6 +42,6 @@ static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
 
 #endif /* __GNUC__ */
 
-#include <xeno/byteorder/little_endian.h>
+#include <xen/byteorder/little_endian.h>
 
 #endif /* _I386_BYTEORDER_H */
index 502c8ba7a68fea51e4f7fc642cfc0db5ddd7b76b..db954a06ed911c5d9ae8a38d8156c653ce67b9cb 100644 (file)
@@ -4,7 +4,7 @@
 #ifndef __ARCH_I386_CACHE_H
 #define __ARCH_I386_CACHE_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 /* L1 cache line size */
 #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
index 06ca344ab4419ae278f99a29ca90729aeda71688..e0854628d3d04a09937f026fbf179ef802bd3fb0 100644 (file)
@@ -8,10 +8,10 @@
 #ifndef _ASM_DMA_H
 #define _ASM_DMA_H
 
-#include <xeno/config.h>
-#include <xeno/spinlock.h>     /* And spinlocks */
+#include <xen/config.h>
+#include <xen/spinlock.h>      /* And spinlocks */
 #include <asm/io.h>            /* need byte IO */
-#include <xeno/delay.h>
+#include <xen/delay.h>
 
 
 #ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER
index 1d38d8b310700391e74d8a735ab44a60f5ecf280..d8cdf0b74e535850910b37c0f3037f487971ba11 100644 (file)
@@ -7,8 +7,8 @@
 #ifndef __ASM_DOMAIN_PAGE_H__
 #define __ASM_DOMAIN_PAGE_H__
 
-#include <xeno/config.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/sched.h>
 
 extern unsigned long *mapcache;
 #define MAPCACHE_ENTRIES        1024
index b0f455a5af81b997d6b81d767b7fc5dcb7ea66d6..12e7403899ed43f195bb8f47dd309073a3bcbba5 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef _ASM_FIXMAP_H
 #define _ASM_FIXMAP_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/apicdef.h>
 #include <asm/page.h>
 
index 49760ef70ce80b6954b6b72840fad2e6f850a1f5..0dd6afc8915c1abbad7cefebb6c6b7744e3a87c1 100644 (file)
@@ -10,7 +10,7 @@
 #ifndef __FLUSHTLB_H__
 #define __FLUSHTLB_H__
 
-#include <xeno/smp.h>
+#include <xen/smp.h>
 
 /*
  * Every GLOBAL_FLUSH_PERIOD ticks of the tlbflush clock, every TLB in the
index 9afe12e2ab829f5c8a64c5bb9cc085eedc4fde88..c59f6e3e0f5ea0ae1c70d0fa50dfb841daea826b 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __ASM_HARDIRQ_H
 #define __ASM_HARDIRQ_H
 
-#include <xeno/config.h>
-#include <xeno/irq.h>
+#include <xen/config.h>
+#include <xen/irq.h>
 
 /* assembly code in softirq.h is sensitive to the offsets of these fields */
 typedef struct {
@@ -14,7 +14,7 @@ typedef struct {
        unsigned long idle_timestamp;
 } ____cacheline_aligned irq_cpustat_t;
 
-#include <xeno/irq_cpustat.h>  /* Standard mappings for irq_cpustat_t above */
+#include <xen/irq_cpustat.h>   /* Standard mappings for irq_cpustat_t above */
 
 /*
  * Are we in an interrupt context? Either doing bottom half
index 5a3f0fd5e6eb00bd1545232068206290d81e962a..95a6bb6cde23668c32db34add708728cb7d6d7da 100644 (file)
@@ -11,7 +11,7 @@
 #ifndef __ASM_I386_I387_H
 #define __ASM_I386_I387_H
 
-#include <xeno/sched.h>
+#include <xen/sched.h>
 #include <asm/processor.h>
 
 extern void init_fpu(void);
index c7fa6b21f07f8eab4f152e7c8ffcbeba0b127862..e1b20f0758d65bc245a50677ab0ef717f1f583c2 100644 (file)
@@ -13,7 +13,7 @@
 
 #ifdef __KERNEL__
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 #ifndef MAX_HWIFS
 # ifdef CONFIG_BLK_DEV_IDEPCI
index 79d75924d0e8fa606621287e06050812a197f9bd..f9e8cc936aaf2f01958b474de86d354271382567 100644 (file)
@@ -1,12 +1,12 @@
 #ifndef _ASM_IO_H
 #define _ASM_IO_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/page.h>
 
 #define IO_SPACE_LIMIT 0xffff
 
-/*#include <xeno/vmalloc.h>*/
+/*#include <xen/vmalloc.h>*/
 
 /*
  * Temporary debugging check to catch old code using
index 44916209a87c84c353d949faec64c6b3c26c2691..a2d412c43b40a1af16d8f38849c1b4d0492411bb 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __ASM_IO_APIC_H
 #define __ASM_IO_APIC_H
 
-#include <xeno/config.h>
-#include <xeno/types.h>
+#include <xen/config.h>
+#include <xen/types.h>
 
 /*
  * Intel IO-APIC support for SMP and UP systems.
index d88429df4a320489e3050aabe29804dcfceeeeea..cf1094bf0f29ba52dc3d07a905c9fb85a3962e7e 100644 (file)
@@ -3,7 +3,7 @@
 
 /* (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar */
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/atomic.h>
 
 #define SA_INTERRUPT    0x20000000
@@ -190,7 +190,7 @@ extern unsigned int * prof_buffer;
 extern unsigned long prof_len;
 extern unsigned long prof_shift;
 
-#include <xeno/irq.h>
+#include <xen/irq.h>
 
 #ifdef CONFIG_SMP /*more of this file should probably be ifdefed SMP */
 static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {
index 03a4efa9e8030dbe7575b4b4123f470626bc164c..8758528f7c7e41fab4025cc259e41b7bdd38d2ad 100644 (file)
@@ -5,7 +5,7 @@
 #define _ASM_MC146818RTC_H
 
 #include <asm/io.h>
-#include <xeno/spinlock.h>
+#include <xen/spinlock.h>
 
 extern spinlock_t rtc_lock;             /* serialize CMOS RAM access */
 
index a4339d64dd6486b83a074ca97ff93bc58f80ccb0..be860c32cd46c6c23c94edc8f908102c7eefeb45 100644 (file)
@@ -20,7 +20,7 @@
 #define copy_page(_t,_f)         memcpy((void *)(_t), (void *)(_f), PAGE_SIZE)
 
 #ifndef __ASSEMBLY__
-#include <xeno/config.h>
+#include <xen/config.h>
 typedef struct { unsigned long l1_lo; } l1_pgentry_t;
 typedef struct { unsigned long l2_lo; } l2_pgentry_t;
 typedef l1_pgentry_t *l1_pagetable_t;
index 0905e62f9f28d02072b57ff51059ff51d5082d5f..1f3692f11483120f1e3ecc9c4ce149a84e16db60 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __i386_PCI_H
 #define __i386_PCI_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 #ifdef __KERNEL__
 
@@ -33,10 +33,10 @@ int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
  * i386 has everything mapped statically.
  */
 
-#include <xeno/types.h>
-#include <xeno/slab.h>
+#include <xen/types.h>
+#include <xen/slab.h>
 #include <asm/scatterlist.h>
-/*#include <xeno/string.h>*/
+/*#include <xen/string.h>*/
 #include <asm/io.h>
 
 struct pci_dev;
index fa161f22d0f3562729e6414efbae0993d1cb9f29..35b926eb17530062f398b6e54e518b4e9cfa5c32 100644 (file)
@@ -12,7 +12,7 @@
 #define __PDB_H__
 
 #include <asm/ptrace.h>
-#include <xeno/list.h>
+#include <xen/list.h>
 
 extern int pdb_initialized;
 extern int pdb_com_port;
index 6f01b44441c4064d467e096fddfb37bd7440b94e..db1d6b948ebdd7d2f165e1ebff066f9f6de8bbaf 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _I386_PGALLOC_H
 #define _I386_PGALLOC_H
 
-#include <xeno/config.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/sched.h>
 #include <asm/processor.h>
 #include <asm/fixmap.h>
 
@@ -57,7 +57,7 @@
 
 #else
 
-#include <xeno/smp.h>
+#include <xen/smp.h>
 
 extern int try_flush_tlb_mask(unsigned long mask);
 extern void flush_tlb_mask(unsigned long mask);
index 0debc605db3fd95d6aa93b52505205ed56a0433c..083a416a6fe0e4582d014713d98968a9fd9b1919 100644 (file)
@@ -11,7 +11,7 @@
 #include <asm/types.h>
 #include <asm/cpufeature.h>
 #include <asm/desc.h>
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <hypervisor-ifs/hypervisor-if.h>
 
 struct task_struct;
index 58a0a24d3095894198de102392e451c944abea83..72208d2db1fa4e274c99b2efc40b1b503ccc10d9 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __ASM_SMP_H
 #define __ASM_SMP_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/ptrace.h>
 
 #ifdef CONFIG_SMP
index 9a4fc8573da8aaa67cdea4df61019e48c7ef3946..d632b2139f3cd35357bd8ebc0d56c1b411c64402 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __ASM_SPINLOCK_H
 #define __ASM_SPINLOCK_H
 
-#include <xeno/config.h>
-#include <xeno/lib.h>
+#include <xen/config.h>
+#include <xen/lib.h>
 #include <asm/atomic.h>
 #include <asm/rwlock.h>
 
index 5d24754f2a690efbf784107e8f53360758bd03b7..bef20a71d56fd89326bc5fb3baef09ca5adecd5d 100644 (file)
@@ -2,7 +2,7 @@
 #define _I386_STRING_H_
 
 #ifdef __KERNEL__
-#include <xeno/config.h>
+#include <xen/config.h>
 /*
  * On a 486 or Pentium, we are better off not using the
  * byte string operations. But on a 386 or a PPro the
index 3e85277d6c1d162ac22372e51d3573b7de672220..f1fcf03c578225032a86bc876d74c46db2644e35 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __ASM_SYSTEM_H
 #define __ASM_SYSTEM_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/bitops.h>
 
 /* Clear and set 'TS' bit respectively */
index baeb85194dcbb007fff6be36753aa66d0dfd8827..4b0a93fc87c22d780b96328c349a973f1c23e07b 100644 (file)
@@ -6,7 +6,7 @@
 #ifndef _ASMi386_TIMEX_H
 #define _ASMi386_TIMEX_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/msr.h>
 
 #ifdef CONFIG_MELAN
index 0bba049f795dae5d864834d74886f476e9431f92..ebfaf85f6894de5b3e0da6aec9870d39e1dd6017 100644 (file)
@@ -24,7 +24,7 @@ typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 #endif
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 typedef signed char s8;
 typedef unsigned char u8;
index bd1dae150324d804ff1e0b5c493bbdd2a1158fdd..bb2616336d8cf38d2e401d03a534d85f0618d9a0 100644 (file)
@@ -4,10 +4,10 @@
 /*
  * User space memory access functions
  */
-#include <xeno/config.h>
-#include <xeno/errno.h>
-#include <xeno/sched.h>
-#include <xeno/prefetch.h>
+#include <xen/config.h>
+#include <xen/errno.h>
+#include <xen/sched.h>
+#include <xen/prefetch.h>
 #include <asm/page.h>
 
 #define VERIFY_READ 0
index ba7f343a61d25378a8544d2ac5f2fe26669bf94c..9044692e3b91c1d5476990ba7116ccbccbfd2524 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __ASM_APIC_H
 #define __ASM_APIC_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/ptrace.h>
 #include <asm/apicdef.h>
 #include <asm/system.h>
index 89e564a854e508407e0ddb9e89ae66f60d2639e3..1f5dc5085dc764e4f9654451d4d3e27c448cfd1e 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __ARCH_X86_64_ATOMIC__
 #define __ARCH_X86_64_ATOMIC__
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 /*
  * Atomic operations that C can't guarantee us.  Useful for
index 611bf3bf4bfe4b8453129c8ccb091685069e8610..45209b11bdc6703a33b9ed45b1b362e9c103e642 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright 1992, Linus Torvalds.
  */
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 /*
  * These have to be done with inline assembly: that way the bit-setting
index ff06e1d22bd62999d971f14545a9a1364843bf1c..f5456cd32e47fb6c725d46d1f3470f0b53ab09da 100644 (file)
@@ -27,6 +27,6 @@ static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
 
 #define __BYTEORDER_HAS_U64__
 
-#include <xeno/byteorder/little_endian.h>
+#include <xen/byteorder/little_endian.h>
 
 #endif /* _X86_64_BYTEORDER_H */
index 1def45b0b7610f52ff3883c43e697a70e320840b..a1d7349a813b919b53931954cd212d508ba82583 100644 (file)
@@ -4,7 +4,7 @@
 #ifndef __ARCH_X8664_CACHE_H
 #define __ARCH_X8664_CACHE_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 /* L1 cache line size */
 #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
index 06ca344ab4419ae278f99a29ca90729aeda71688..e0854628d3d04a09937f026fbf179ef802bd3fb0 100644 (file)
@@ -8,10 +8,10 @@
 #ifndef _ASM_DMA_H
 #define _ASM_DMA_H
 
-#include <xeno/config.h>
-#include <xeno/spinlock.h>     /* And spinlocks */
+#include <xen/config.h>
+#include <xen/spinlock.h>      /* And spinlocks */
 #include <asm/io.h>            /* need byte IO */
-#include <xeno/delay.h>
+#include <xen/delay.h>
 
 
 #ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER
index 026fb251be59f7065913cadbf45003a32b76f00e..f093ee2d964ca7c5f7ebb7807f3140f9089872be 100644 (file)
@@ -7,8 +7,8 @@
 #ifndef __ASM_DOMAIN_PAGE_H__
 #define __ASM_DOMAIN_PAGE_H__
 
-#include <xeno/config.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/sched.h>
 #include <asm/page.h>
 
 /*
index 4aabcd5d61b5bb77aeb7ed0917fcb9198a679a4a..d3f9803af484a66e7bcbc425edd381b6e7acc807 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef _ASM_FIXMAP_H
 #define _ASM_FIXMAP_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/apicdef.h>
 #include <asm/page.h>
 
index 49760ef70ce80b6954b6b72840fad2e6f850a1f5..0dd6afc8915c1abbad7cefebb6c6b7744e3a87c1 100644 (file)
@@ -10,7 +10,7 @@
 #ifndef __FLUSHTLB_H__
 #define __FLUSHTLB_H__
 
-#include <xeno/smp.h>
+#include <xen/smp.h>
 
 /*
  * Every GLOBAL_FLUSH_PERIOD ticks of the tlbflush clock, every TLB in the
index 9afe12e2ab829f5c8a64c5bb9cc085eedc4fde88..c59f6e3e0f5ea0ae1c70d0fa50dfb841daea826b 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __ASM_HARDIRQ_H
 #define __ASM_HARDIRQ_H
 
-#include <xeno/config.h>
-#include <xeno/irq.h>
+#include <xen/config.h>
+#include <xen/irq.h>
 
 /* assembly code in softirq.h is sensitive to the offsets of these fields */
 typedef struct {
@@ -14,7 +14,7 @@ typedef struct {
        unsigned long idle_timestamp;
 } ____cacheline_aligned irq_cpustat_t;
 
-#include <xeno/irq_cpustat.h>  /* Standard mappings for irq_cpustat_t above */
+#include <xen/irq_cpustat.h>   /* Standard mappings for irq_cpustat_t above */
 
 /*
  * Are we in an interrupt context? Either doing bottom half
index 5a3f0fd5e6eb00bd1545232068206290d81e962a..95a6bb6cde23668c32db34add708728cb7d6d7da 100644 (file)
@@ -11,7 +11,7 @@
 #ifndef __ASM_I386_I387_H
 #define __ASM_I386_I387_H
 
-#include <xeno/sched.h>
+#include <xen/sched.h>
 #include <asm/processor.h>
 
 extern void init_fpu(void);
index b60946520717c7309f7f3232d31189da6f376f52..05de458761362599385888f3632922594fa25e2a 100644 (file)
@@ -13,7 +13,7 @@
 
 #ifdef __KERNEL__
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 #ifndef MAX_HWIFS
 # ifdef CONFIG_BLK_DEV_IDEPCI
index aa580dd71acbb42159619398167ba3ba80ca0f28..35ec64235e55389f68cc01b6f1478858461001d5 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef _ASM_IO_H
 #define _ASM_IO_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/page.h>
 
 /*
index 8227cdb976450aabd9b5fbb2647ca3e53496be29..d5d2e4c439b7b41ab15cb920666931dc8a970b57 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __ASM_IO_APIC_H
 #define __ASM_IO_APIC_H
 
-#include <xeno/config.h>
-#include <xeno/types.h>
+#include <xen/config.h>
+#include <xen/types.h>
 
 /*
  * Intel IO-APIC support for SMP and UP systems.
index b2728d1b55ca23cf21935dc80eb889020afe24d8..74e0495555d773445ecf647ae6c1e26e964d9949 100644 (file)
@@ -3,7 +3,7 @@
 
 /* (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar */
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/atomic.h>
 
 #define SA_INTERRUPT    0x20000000
@@ -122,7 +122,7 @@ extern unsigned int * prof_buffer;
 extern unsigned long prof_len;
 extern unsigned long prof_shift;
 
-#include <xeno/irq.h>
+#include <xen/irq.h>
 
 #ifdef CONFIG_SMP /*more of this file should probably be ifdefed SMP */
 static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {
index 03a4efa9e8030dbe7575b4b4123f470626bc164c..8758528f7c7e41fab4025cc259e41b7bdd38d2ad 100644 (file)
@@ -5,7 +5,7 @@
 #define _ASM_MC146818RTC_H
 
 #include <asm/io.h>
-#include <xeno/spinlock.h>
+#include <xen/spinlock.h>
 
 extern spinlock_t rtc_lock;             /* serialize CMOS RAM access */
 
index d7cb5c6b3f305c9d2a435747c5cdbbfbce5e72d7..0073a45c938c0056e390efdb4ddbf873f97be993 100644 (file)
@@ -47,7 +47,7 @@
 #define copy_page(_t,_f)         memcpy((void *)(_t), (void *)(_f), PAGE_SIZE)
 
 #ifndef __ASSEMBLY__
-#include <xeno/config.h>
+#include <xen/config.h>
 typedef struct { unsigned long l1_lo; } l1_pgentry_t;
 typedef struct { unsigned long l2_lo; } l2_pgentry_t;
 typedef struct { unsigned long l3_lo; } l3_pgentry_t;
@@ -191,7 +191,7 @@ extern void paging_init(void);
 #define __flush_tlb_one(__addr) \
 __asm__ __volatile__("invlpg %0": :"m" (*(char *) (__addr)))
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 /*
  * Tell the user there is some problem.  The exception handler decodes this frame.
index ffb30f50ba89baa68352e2ff8e89ab397856ed7a..988670995c7da4c96fa20beb2f1df51fe97572d3 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __x8664_PCI_H
 #define __x8664_PCI_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/io.h>
 
 
@@ -24,8 +24,8 @@ void pcibios_penalize_isa_irq(int irq);
 struct irq_routing_table *pcibios_get_irq_routing_table(void);
 int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
 
-#include <xeno/types.h>
-#include <xeno/slab.h>
+#include <xen/types.h>
+#include <xen/slab.h>
 #include <asm/scatterlist.h>
 #include <asm/io.h>
 #include <asm/page.h>
index 134d2fb9bf5f889794a6987b386c024db76dd8ff..b9ca345ee4eb6ab035bf97a2234bfbed36e6c9ad 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef X86_64_PDA_H
 #define X86_64_PDA_H
 
-#include <xeno/cache.h>
+#include <xen/cache.h>
 
 /* Per processor datastructure. %gs points to it while the kernel runs */ 
 /* To use a new field with the *_pda macros it needs to be added to tools/offset.c */
index fa161f22d0f3562729e6414efbae0993d1cb9f29..35b926eb17530062f398b6e54e518b4e9cfa5c32 100644 (file)
@@ -12,7 +12,7 @@
 #define __PDB_H__
 
 #include <asm/ptrace.h>
-#include <xeno/list.h>
+#include <xen/list.h>
 
 extern int pdb_initialized;
 extern int pdb_com_port;
index de866465efcef96fe9e1ed3aab1b6a9703ba2cc1..559e33194ffb880005b477ca9e17fd0332702b26 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _X86_64_PGALLOC_H
 #define _X86_64_PGALLOC_H
 
-#include <xeno/config.h>
-#include <xeno/sched.h>
+#include <xen/config.h>
+#include <xen/sched.h>
 #include <asm/processor.h>
 #include <asm/fixmap.h>
 
@@ -27,7 +27,7 @@
 #define try_flush_tlb_mask(_mask) __flush_tlb()
 
 #else
-#include <xeno/smp.h>
+#include <xen/smp.h>
 
 extern int try_flush_tlb_mask(unsigned long mask);
 extern void flush_tlb_mask(unsigned long mask);
index 16d095f6c85a9a912e368753e8493959c1b8af43..ad3344cf3c9eb7f49fc0957fe619e35cdd462c65 100644 (file)
@@ -11,7 +11,7 @@
 #include <asm/types.h>
 #include <asm/cpufeature.h>
 #include <asm/desc.h>
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <hypervisor-ifs/hypervisor-if.h>
 
 struct task_struct;
index 4c795083d1b85d3c35eba099ae792bb386a780e7..bdc1b40e251d5e290ed7ca45110f54eea0882aa7 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __ASM_SMP_H
 #define __ASM_SMP_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/ptrace.h>
 
 #ifdef CONFIG_SMP
index fe89aefd7b7e94de51af63af231239e7cf536c04..50e7ffec435df534aaaf208cbecec90ba4a65f6a 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __ASM_SPINLOCK_H
 #define __ASM_SPINLOCK_H
 
-#include <xeno/config.h>
-#include <xeno/lib.h>
+#include <xen/config.h>
+#include <xen/lib.h>
 #include <asm/atomic.h>
 #include <asm/rwlock.h>
 
index f563fa3a52ef54b6923c7d16a0d18c91ee5da193..b6b6172381a17902da5de8f223e6f39cc587d08b 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __ASM_SYSTEM_H
 #define __ASM_SYSTEM_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/bitops.h>
 
 /* Clear and set 'TS' bit respectively */
index 29f4651c34f987fba35ebb8cae764884ff3d1c43..7b6835763a7d4efe52aa0706b733c7e52a34b514 100644 (file)
@@ -6,7 +6,7 @@
 #ifndef _ASMx8664_TIMEX_H
 #define _ASMx8664_TIMEX_H
 
-#include <xeno/config.h>
+#include <xen/config.h>
 #include <asm/msr.h>
 
 #define CLOCK_TICK_RATE (vxtime_hz)
index ea7aac72f7f5d4c1a6ab717b8e804612344ac4e9..25a78f28c6f9be44510fe84eb042ab0649f149a9 100644 (file)
@@ -22,7 +22,7 @@ typedef unsigned int __u32;
 typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 
-#include <xeno/config.h>
+#include <xen/config.h>
 
 typedef signed char s8;
 typedef unsigned char u8;
index 49a5db93c24f71349c6134be4ade83eb56bfb432..952e1b2f0a788952b6c50f928ab734c6921c54cc 100644 (file)
@@ -4,10 +4,10 @@
 /*
  * User space memory access functions
  */
-#include <xeno/config.h>
-#include <xeno/sched.h>
-#include <xeno/prefetch.h>
-#include <xeno/errno.h>
+#include <xen/config.h>
+#include <xen/sched.h>
+#include <xen/prefetch.h>
+#include <xen/errno.h>
 #include <asm/page.h>
 
 #define VERIFY_READ 0
index 7614d7165af5b592a5e5a7abff72015d69b8abf8..402af3520c029a6c1585e8b3ce9a9e6aa60e2a74 100644 (file)
@@ -223,7 +223,7 @@ typedef struct shared_info_st {
      * atomically!). The guest OS detects this because 'time_version1' is
      * incremented just before updating these values, and 'time_version2' is
      * incremented immediately after. See Xenolinux code for an example of how 
-     * to read these values safely (arch/xeno/kernel/time.c).
+     * to read these values safely (arch/xen/kernel/time.c).
      */
     unsigned long      time_version1;   /* A version number for info below.  */
     unsigned long      time_version2;   /* A version number for info below.  */
index 438cc80b835dac08e4d73ea2e442af3192f48067..9c39787c84313ca87351ea3dd2331bcd73a2e3f2 100644 (file)
@@ -12,6 +12,6 @@
 
 #ifndef SCSICAM_H
 #define SCSICAM_H
-#include <xeno/kdev_t.h>
+#include <xen/kdev_t.h>
 extern int scsicam_bios_param (Disk *disk, kdev_t dev, int *ip);
 #endif /* def SCSICAM_H */
diff --git a/xen/include/xen/ac_timer.h b/xen/include/xen/ac_timer.h
new file mode 100644 (file)
index 0000000..c561272
--- /dev/null
@@ -0,0 +1,91 @@
+/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
+ ****************************************************************************
+ * (C) 2002 - Rolf Neugebauer - Intel Research Cambridge
+ ****************************************************************************
+ *
+ *        File: ac_timer.h
+ *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
+ *     Changes: 
+ *              
+ *        Date: Nov 2002
+ * 
+ * Environment: Xen Hypervisor
+ * Description: Accurate timer for the Hypervisor
+ * 
+ ****************************************************************************
+ * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
+ ****************************************************************************
+ */
+
+#ifndef _AC_TIMER_H_
+#define _AC_TIMER_H_
+
+#include <xen/time.h>
+
+struct ac_timer {
+    /*
+     * PUBLIC FIELDS
+     */
+    /* System time expiry value (nanoseconds since boot). */
+    s_time_t         expires;
+    /* CPU on which this timer will be installed and executed. */
+    unsigned int     cpu;
+    /* On expiry, '(*function)(data)' will be executed in softirq context. */
+    unsigned long    data;
+    void             (*function)(unsigned long);
+
+    /*
+     * PRIVATE FIELDS
+     */
+    unsigned int     heap_offset;
+};
+
+/*
+ * This function can be called for any CPU from any CPU in any context.
+ * It initialises the private fields of the ac_timer structure.
+ */
+static __inline__ void init_ac_timer(struct ac_timer *timer)
+{
+    timer->heap_offset = 0;
+}
+
+/*
+ * This function can be called for any CPU from any CPU in any context.
+ * It returns TRUE if the given timer is on a timer list.
+ */
+static __inline__ int active_ac_timer(struct ac_timer *timer)
+{
+    return (timer->heap_offset != 0);
+}
+
+/*
+ * This function can be called for any CPU from any CPU in any context, BUT:
+ *  -- The private fields must have been initialised (ac_timer_init).
+ *  -- All public fields must be initialised.
+ *  -- The timer must not currently be on a timer list.
+ */
+extern void add_ac_timer(struct ac_timer *timer);
+
+/*
+ * This function can be called for any CPU from any CPU in any context, BUT:
+ *  -- The private fields must have been initialised (ac_timer_init).
+ *  -- All public fields must be initialised.
+ *  -- The timer must currently be on a timer list.
+ */
+extern void rem_ac_timer(struct ac_timer *timer);
+
+/*
+ * This function can be called for any CPU from any CPU in any context, BUT:
+ *  -- The private fields must have been initialised (ac_timer_init).
+ *  -- All public fields must be initialised.
+ */
+extern void mod_ac_timer(struct ac_timer *timer, s_time_t new_time);
+
+
+/*
+ * PRIVATE DEFINITIONS
+ */
+
+extern int reprogram_ac_timer(s_time_t timeout);
+
+#endif /* _AC_TIMER_H_ */
diff --git a/xen/include/xen/blk.h b/xen/include/xen/blk.h
new file mode 100644 (file)
index 0000000..2c8edef
--- /dev/null
@@ -0,0 +1,409 @@
+#ifndef _BLK_H
+#define _BLK_H
+
+#include <xen/blkdev.h>
+/*#include <xen/locks.h>*/
+#include <xen/config.h>
+#include <xen/spinlock.h>
+
+/*
+ * Spinlock for protecting the request queue which
+ * is mucked around with in interrupts on potentially
+ * multiple CPU's..
+ */
+extern spinlock_t io_request_lock;
+
+/*
+ * Initialization functions.
+ */
+extern int isp16_init(void);
+extern int cdu31a_init(void);
+extern int acsi_init(void);
+extern int mcd_init(void);
+extern int mcdx_init(void);
+extern int sbpcd_init(void);
+extern int aztcd_init(void);
+extern int sony535_init(void);
+extern int gscd_init(void);
+extern int cm206_init(void);
+extern int optcd_init(void);
+extern int sjcd_init(void);
+extern int cdi_init(void);
+extern int hd_init(void);
+extern int ide_init(void);
+extern int xd_init(void);
+extern int mfm_init(void);
+extern int loop_init(void);
+extern int md_init(void);
+extern int ap_init(void);
+extern int ddv_init(void);
+extern int z2_init(void);
+extern int swim3_init(void);
+extern int swimiop_init(void);
+extern int amiga_floppy_init(void);
+extern int atari_floppy_init(void);
+extern int ez_init(void);
+extern int bpcd_init(void);
+extern int ps2esdi_init(void);
+extern int jsfd_init(void);
+extern int viodasd_init(void);
+extern int viocd_init(void);
+
+#if defined(CONFIG_ARCH_S390)
+extern int dasd_init(void);
+extern int xpram_init(void);
+extern int tapeblock_init(void);
+#endif /* CONFIG_ARCH_S390 */
+
+extern void set_device_ro(kdev_t dev,int flag);
+#if 0
+void add_blkdev_randomness(int major);
+#else
+#define add_blkdev_randomness(_major) ((void)0)
+#endif
+
+extern int floppy_init(void);
+extern int rd_doload;          /* 1 = load ramdisk, 0 = don't load */
+extern int rd_prompt;          /* 1 = prompt for ramdisk, 0 = don't prompt */
+extern int rd_image_start;     /* starting block # of image */
+
+#ifdef CONFIG_BLK_DEV_INITRD
+
+#define INITRD_MINOR 250 /* shouldn't collide with /dev/ram* too soon ... */
+
+extern unsigned long initrd_start,initrd_end;
+extern int initrd_below_start_ok; /* 1 if it is not an error if initrd_start < memory_start */
+void initrd_init(void);
+
+#endif
+
+                
+/*
+ * end_request() and friends. Must be called with the request queue spinlock
+ * acquired. All functions called within end_request() _must_be_ atomic.
+ *
+ * Several drivers define their own end_request and call
+ * end_that_request_first() and end_that_request_last()
+ * for parts of the original function. This prevents
+ * code duplication in drivers.
+ */
+
+static inline void blkdev_dequeue_request(struct request * req)
+{
+       list_del(&req->queue);
+}
+
+int end_that_request_first(struct request *req, int uptodate, char *name);
+void end_that_request_last(struct request *req);
+
+#if defined(MAJOR_NR) || defined(IDE_DRIVER)
+
+#undef DEVICE_ON
+#undef DEVICE_OFF
+
+/*
+ * Add entries as needed.
+ */
+
+#ifdef IDE_DRIVER
+
+#define DEVICE_NR(device)      (MINOR(device) >> PARTN_BITS)
+#define DEVICE_NAME "ide"
+
+#elif (MAJOR_NR == RAMDISK_MAJOR)
+
+/* ram disk */
+#define DEVICE_NAME "ramdisk"
+#define DEVICE_NR(device) (MINOR(device))
+#define DEVICE_NO_RANDOM
+
+#elif (MAJOR_NR == Z2RAM_MAJOR)
+
+/* Zorro II Ram */
+#define DEVICE_NAME "Z2RAM"
+#define DEVICE_REQUEST do_z2_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == FLOPPY_MAJOR)
+
+static void floppy_off(unsigned int nr);
+
+#define DEVICE_NAME "floppy"
+#define DEVICE_INTR do_floppy
+#define DEVICE_REQUEST do_fd_request
+#define DEVICE_NR(device) ( (MINOR(device) & 3) | ((MINOR(device) & 0x80 ) >> 5 ))
+#define DEVICE_OFF(device) floppy_off(DEVICE_NR(device))
+
+#elif (MAJOR_NR == HD_MAJOR)
+
+/* Hard disk:  timeout is 6 seconds. */
+#define DEVICE_NAME "hard disk"
+#define DEVICE_INTR do_hd
+#define TIMEOUT_VALUE (6*HZ)
+#define DEVICE_REQUEST do_hd_request
+#define DEVICE_NR(device) (MINOR(device)>>6)
+
+#elif (SCSI_DISK_MAJOR(MAJOR_NR))
+
+#define DEVICE_NAME "scsidisk"
+#define TIMEOUT_VALUE (2*HZ)
+#define DEVICE_NR(device) (((MAJOR(device) & SD_MAJOR_MASK) << (8 - 4)) + (MINOR(device) >> 4))
+
+/* Kludge to use the same number for both char and block major numbers */
+#elif  (MAJOR_NR == MD_MAJOR) && defined(MD_DRIVER)
+
+#define DEVICE_NAME "Multiple devices driver"
+#define DEVICE_REQUEST do_md_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == SCSI_TAPE_MAJOR)
+
+#define DEVICE_NAME "scsitape"
+#define DEVICE_INTR do_st  
+#define DEVICE_NR(device) (MINOR(device) & 0x7f)
+
+#elif (MAJOR_NR == OSST_MAJOR)
+
+#define DEVICE_NAME "onstream" 
+#define DEVICE_INTR do_osst
+#define DEVICE_NR(device) (MINOR(device) & 0x7f) 
+#define DEVICE_ON(device) 
+#define DEVICE_OFF(device) 
+
+#elif (MAJOR_NR == SCSI_CDROM_MAJOR)
+
+#define DEVICE_NAME "CD-ROM"
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == XT_DISK_MAJOR)
+
+#define DEVICE_NAME "xt disk"
+#define DEVICE_REQUEST do_xd_request
+#define DEVICE_NR(device) (MINOR(device) >> 6)
+
+#elif (MAJOR_NR == PS2ESDI_MAJOR)
+
+#define DEVICE_NAME "PS/2 ESDI"
+#define DEVICE_REQUEST do_ps2esdi_request
+#define DEVICE_NR(device) (MINOR(device) >> 6)
+
+#elif (MAJOR_NR == CDU31A_CDROM_MAJOR)
+
+#define DEVICE_NAME "CDU31A"
+#define DEVICE_REQUEST do_cdu31a_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == ACSI_MAJOR) && (defined(CONFIG_ATARI_ACSI) || defined(CONFIG_ATARI_ACSI_MODULE))
+
+#define DEVICE_NAME "ACSI"
+#define DEVICE_INTR do_acsi
+#define DEVICE_REQUEST do_acsi_request
+#define DEVICE_NR(device) (MINOR(device) >> 4)
+
+#elif (MAJOR_NR == MITSUMI_CDROM_MAJOR)
+
+#define DEVICE_NAME "Mitsumi CD-ROM"
+/* #define DEVICE_INTR do_mcd */
+#define DEVICE_REQUEST do_mcd_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == MITSUMI_X_CDROM_MAJOR)
+
+#define DEVICE_NAME "Mitsumi CD-ROM"
+/* #define DEVICE_INTR do_mcdx */
+#define DEVICE_REQUEST do_mcdx_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == MATSUSHITA_CDROM_MAJOR)
+
+#define DEVICE_NAME "Matsushita CD-ROM controller #1"
+#define DEVICE_REQUEST do_sbpcd_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == MATSUSHITA_CDROM2_MAJOR)
+
+#define DEVICE_NAME "Matsushita CD-ROM controller #2"
+#define DEVICE_REQUEST do_sbpcd2_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == MATSUSHITA_CDROM3_MAJOR)
+
+#define DEVICE_NAME "Matsushita CD-ROM controller #3"
+#define DEVICE_REQUEST do_sbpcd3_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == MATSUSHITA_CDROM4_MAJOR)
+
+#define DEVICE_NAME "Matsushita CD-ROM controller #4"
+#define DEVICE_REQUEST do_sbpcd4_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == AZTECH_CDROM_MAJOR)
+
+#define DEVICE_NAME "Aztech CD-ROM"
+#define DEVICE_REQUEST do_aztcd_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == CDU535_CDROM_MAJOR)
+
+#define DEVICE_NAME "SONY-CDU535"
+#define DEVICE_INTR do_cdu535
+#define DEVICE_REQUEST do_cdu535_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == GOLDSTAR_CDROM_MAJOR)
+
+#define DEVICE_NAME "Goldstar R420"
+#define DEVICE_REQUEST do_gscd_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == CM206_CDROM_MAJOR)
+#define DEVICE_NAME "Philips/LMS CD-ROM cm206"
+#define DEVICE_REQUEST do_cm206_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == OPTICS_CDROM_MAJOR)
+
+#define DEVICE_NAME "DOLPHIN 8000AT CD-ROM"
+#define DEVICE_REQUEST do_optcd_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == SANYO_CDROM_MAJOR)
+
+#define DEVICE_NAME "Sanyo H94A CD-ROM"
+#define DEVICE_REQUEST do_sjcd_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == APBLOCK_MAJOR)
+
+#define DEVICE_NAME "apblock"
+#define DEVICE_REQUEST ap_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == DDV_MAJOR)
+
+#define DEVICE_NAME "ddv"
+#define DEVICE_REQUEST ddv_request
+#define DEVICE_NR(device) (MINOR(device)>>PARTN_BITS)
+
+#elif (MAJOR_NR == MFM_ACORN_MAJOR)
+
+#define DEVICE_NAME "mfm disk"
+#define DEVICE_INTR do_mfm
+#define DEVICE_REQUEST do_mfm_request
+#define DEVICE_NR(device) (MINOR(device) >> 6)
+
+#elif (MAJOR_NR == NBD_MAJOR)
+
+#define DEVICE_NAME "nbd"
+#define DEVICE_REQUEST do_nbd_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == MDISK_MAJOR)
+
+#define DEVICE_NAME "mdisk"
+#define DEVICE_REQUEST mdisk_request
+#define DEVICE_NR(device) (MINOR(device))
+
+#elif (MAJOR_NR == DASD_MAJOR)
+
+#define DEVICE_NAME "dasd"
+#define DEVICE_REQUEST do_dasd_request
+#define DEVICE_NR(device) (MINOR(device) >> PARTN_BITS)
+
+#elif (MAJOR_NR == I2O_MAJOR)
+
+#define DEVICE_NAME "I2O block"
+#define DEVICE_REQUEST i2ob_request
+#define DEVICE_NR(device) (MINOR(device)>>4)
+
+#elif (MAJOR_NR == COMPAQ_SMART2_MAJOR)
+
+#define DEVICE_NAME "ida"
+#define TIMEOUT_VALUE (25*HZ)
+#define DEVICE_REQUEST do_ida_request
+#define DEVICE_NR(device) (MINOR(device) >> 4)
+
+#endif /* MAJOR_NR == whatever */
+
+/* provide DEVICE_xxx defaults, if not explicitly defined
+ * above in the MAJOR_NR==xxx if-elif tree */
+#ifndef DEVICE_ON
+#define DEVICE_ON(device) do {} while (0)
+#endif
+#ifndef DEVICE_OFF
+#define DEVICE_OFF(device) do {} while (0)
+#endif
+
+#if (MAJOR_NR != SCSI_TAPE_MAJOR) && (MAJOR_NR != OSST_MAJOR)
+#if !defined(IDE_DRIVER)
+
+#ifndef CURRENT
+#define CURRENT blkdev_entry_next_request(&blk_dev[MAJOR_NR].request_queue.queue_head)
+#endif
+#ifndef QUEUE_EMPTY
+#define QUEUE_EMPTY list_empty(&blk_dev[MAJOR_NR].request_queue.queue_head)
+#endif
+
+#ifndef DEVICE_NAME
+#define DEVICE_NAME "unknown"
+#endif
+
+#define CURRENT_DEV DEVICE_NR(CURRENT->rq_dev)
+
+#ifdef DEVICE_INTR
+static void (*DEVICE_INTR)(void) = NULL;
+#endif
+
+#define SET_INTR(x) (DEVICE_INTR = (x))
+
+#ifdef DEVICE_REQUEST
+static void (DEVICE_REQUEST)(request_queue_t *);
+#endif 
+  
+#ifdef DEVICE_INTR
+#define CLEAR_INTR SET_INTR(NULL)
+#else
+#define CLEAR_INTR
+#endif
+
+#define INIT_REQUEST \
+       if (QUEUE_EMPTY) {\
+               CLEAR_INTR; \
+               return; \
+       } \
+       if (MAJOR(CURRENT->rq_dev) != MAJOR_NR) \
+               panic(DEVICE_NAME ": request list destroyed"); \
+       if (CURRENT->bh) { \
+               if (!buffer_locked(CURRENT->bh)) \
+                       panic(DEVICE_NAME ": block not locked"); \
+       }
+
+#endif /* !defined(IDE_DRIVER) */
+
+
+#ifndef LOCAL_END_REQUEST      /* If we have our own end_request, we do not want to include this mess */
+
+#if ! SCSI_BLK_MAJOR(MAJOR_NR) && (MAJOR_NR != COMPAQ_SMART2_MAJOR)
+
+static inline void end_request(int uptodate) {
+       struct request *req = CURRENT;
+
+       if (end_that_request_first(req, uptodate, DEVICE_NAME))
+               return;
+
+#ifndef DEVICE_NO_RANDOM
+       add_blkdev_randomness(MAJOR(req->rq_dev));
+#endif
+       DEVICE_OFF(req->rq_dev);
+       blkdev_dequeue_request(req);
+       end_that_request_last(req);
+}
+
+#endif /* ! SCSI_BLK_MAJOR(MAJOR_NR) */
+#endif /* LOCAL_END_REQUEST */
+
+#endif /* (MAJOR_NR != SCSI_TAPE_MAJOR) */
+#endif /* defined(MAJOR_NR) || defined(IDE_DRIVER) */
+
+#endif /* _BLK_H */
diff --git a/xen/include/xen/blkdev.h b/xen/include/xen/blkdev.h
new file mode 100644 (file)
index 0000000..c3dbc32
--- /dev/null
@@ -0,0 +1,405 @@
+#ifndef _LINUX_BLKDEV_H
+#define _LINUX_BLKDEV_H
+
+#include <xen/lib.h>
+#include <asm/atomic.h>
+#include <asm/bitops.h>
+#include <xen/list.h>
+#include <xen/kdev_t.h>
+#include <xen/sched.h>
+#include <xen/mm.h>
+
+/* Some defines from fs.h that may actually be useful to the blkdev layer. */
+#define READ 0
+#define WRITE 1
+#define READA 2
+#define BLOCK_SIZE_BITS 10
+#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
+
+typedef struct {
+    struct task_struct *domain;
+    unsigned long       id;
+    atomic_t            pendcnt;
+    unsigned short      operation;
+    unsigned short      status;
+} pending_req_t;
+
+extern kdev_t xendev_to_physdev(unsigned short xendev);
+
+extern void init_blkdev_info(struct task_struct *);
+extern void unlink_blkdev_info(struct task_struct *);
+extern void destroy_blkdev_info(struct task_struct *);
+
+extern int unregister_blkdev(unsigned int, const char *);
+extern int invalidate_device(kdev_t, int);
+extern int check_disk_change(kdev_t);
+struct block_device;
+extern void invalidate_bdev(struct block_device *, int);
+
+/*
+ * Metainformation regarding block devices is kept in inode and file
+ * structures. We don't actually want those so we define just as much 
+ * as we need right here.
+ */
+struct file {
+};
+struct inode {
+    kdev_t i_rdev; /* for _open and _release, specifies the blkdev */
+    struct block_device *i_bdev;
+};
+
+struct block_device_operations {
+        int (*open) (struct inode *, struct file *);
+        int (*release) (struct inode *, struct file *);
+        int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long);
+        int (*check_media_change) (kdev_t);
+        int (*revalidate) (kdev_t);
+};
+
+
+enum bh_state_bits {
+        BH_Uptodate,    /* 1 if the buffer contains valid data */
+        BH_Dirty,       /* 1 if the buffer is dirty */
+        BH_Lock,        /* 1 if the buffer is locked */
+        BH_Req,         /* 0 if the buffer has been invalidated */
+        BH_Mapped,      /* 1 if the buffer has a disk mapping */
+        BH_New,         /* 1 if the buffer is new and not yet written out */
+        BH_Async,       /* 1 if the buffer is under end_buffer_io_async I/O */
+        BH_Wait_IO,     /* 1 if we should write out this buffer */
+        BH_Launder,     /* 1 if we can throttle on this buffer */
+        BH_JBD,         /* 1 if it has an attached journal_head */
+        BH_Read,        /* 1 if request is a read from disc */
+        BH_Write        /* 1 if request is a write to disc */
+};
+
+struct buffer_head {
+        unsigned long b_rsector;        /* Real buffer location on disk */
+        unsigned short b_size;          /* block size */
+        kdev_t b_dev;                   /* device (B_FREE = free) */
+        unsigned long b_state;          /* buffer state bitmap (see above) */
+        struct buffer_head *b_reqnext;  /* request queue */
+        char *b_data;                   /* pointer to data block */
+       struct pfn_info *b_page;        /* the page this bh is mapped to */
+        void (*b_end_io)(struct buffer_head *bh, int uptodate);
+        pending_req_t *pending_req;
+};
+
+#define b_rdev b_dev /* In Xen, there's no device layering (eg. s/w RAID). */
+
+typedef void (bh_end_io_t)(struct buffer_head *bh, int uptodate);
+void init_buffer(struct buffer_head *, bh_end_io_t *, void *);
+
+#define __buffer_state(bh, state)       (((bh)->b_state & (1UL << BH_##state)) != 0)
+
+#define buffer_uptodate(bh)     __buffer_state(bh,Uptodate)
+#define buffer_dirty(bh)        __buffer_state(bh,Dirty)
+#define buffer_locked(bh)       __buffer_state(bh,Lock)
+#define buffer_req(bh)          __buffer_state(bh,Req)
+#define buffer_mapped(bh)       __buffer_state(bh,Mapped)
+#define buffer_new(bh)          __buffer_state(bh,New)
+#define buffer_async(bh)        __buffer_state(bh,Async)
+#define buffer_launder(bh)      __buffer_state(bh,Launder)
+
+#define bh_offset(bh)           ((unsigned long)(bh)->b_data & ~PAGE_MASK)
+
+extern void set_bh_page(struct buffer_head *bh, struct pfn_info *page, unsigned long offset);
+
+#define atomic_set_buffer_clean(bh) test_and_clear_bit(BH_Dirty, &(bh)->b_state)
+
+static inline void __mark_buffer_clean(struct buffer_head *bh)
+{
+    panic("__mark_buffer_clean");
+}
+
+static inline void mark_buffer_clean(struct buffer_head * bh)
+{
+        if (atomic_set_buffer_clean(bh))
+                __mark_buffer_clean(bh);
+}
+
+static inline void buffer_IO_error(struct buffer_head * bh)
+{
+    mark_buffer_clean(bh);
+    /* b_end_io has to clear the BH_Uptodate bitflag in the error case! */
+    bh->b_end_io(bh, 0);
+}
+
+/**** XXX END OF BUFFER_HEAD STUFF XXXX ****/
+
+#include <xen/major.h>
+#include <xen/sched.h>
+#include <xen/genhd.h>
+#include <xen/tqueue.h>
+#include <xen/list.h>
+
+struct request_queue;
+typedef struct request_queue request_queue_t;
+struct elevator_s;
+typedef struct elevator_s elevator_t;
+
+/*
+ * Ok, this is an expanded form so that we can use the same
+ * request for paging requests.
+ */
+struct request {
+       struct list_head queue;
+       int elevator_sequence;
+
+       volatile int rq_status; /* should split this into a few status bits */
+#define RQ_INACTIVE            (-1)
+#define RQ_ACTIVE              1
+#define RQ_SCSI_BUSY           0xffff
+#define RQ_SCSI_DONE           0xfffe
+#define RQ_SCSI_DISCONNECTING  0xffe0
+
+       kdev_t rq_dev;
+       int cmd;                /* READ or WRITE */
+       int errors;
+       unsigned long start_time;
+       unsigned long sector;
+       unsigned long nr_sectors;
+       unsigned long hard_sector, hard_nr_sectors;
+       unsigned int nr_segments;
+       unsigned int nr_hw_segments;
+       unsigned long current_nr_sectors;
+       void * special;
+       char * buffer;
+       struct completion * waiting;
+       struct buffer_head * bh;
+       struct buffer_head * bhtail;
+       request_queue_t *q;
+};
+
+#include <xen/elevator.h>
+
+typedef int (merge_request_fn) (request_queue_t *q, 
+                               struct request  *req,
+                               struct buffer_head *bh,
+                               int);
+typedef int (merge_requests_fn) (request_queue_t *q, 
+                                struct request  *req,
+                                struct request  *req2,
+                                int);
+typedef void (request_fn_proc) (request_queue_t *q);
+typedef request_queue_t * (queue_proc) (kdev_t dev);
+typedef int (make_request_fn) (request_queue_t *q, int rw, struct buffer_head *bh);
+typedef void (plug_device_fn) (request_queue_t *q, kdev_t device);
+typedef void (unplug_device_fn) (void *q);
+
+/*
+ * Default nr free requests per queue, ll_rw_blk will scale it down
+ * according to available RAM at init time
+ */
+#define QUEUE_NR_REQUESTS      8192
+
+struct request_list {
+       unsigned int count;
+       struct list_head free;
+};
+
+struct request_queue
+{
+       /*
+        * the queue request freelist, one for reads and one for writes
+        */
+       struct request_list     rq[2];
+
+       /*
+        * The total number of requests on each queue
+        */
+       int nr_requests;
+
+       /*
+        * Batching threshold for sleep/wakeup decisions
+        */
+       int batch_requests;
+
+       /*
+        * Together with queue_head for cacheline sharing
+        */
+       struct list_head        queue_head;
+       elevator_t              elevator;
+
+       request_fn_proc         * request_fn;
+       merge_request_fn        * back_merge_fn;
+       merge_request_fn        * front_merge_fn;
+       merge_requests_fn       * merge_requests_fn;
+       make_request_fn         * make_request_fn;
+       plug_device_fn          * plug_device_fn;
+       /*
+        * The queue owner gets to use this for whatever they like.
+        * ll_rw_blk doesn't touch it.
+        */
+       void                    * queuedata;
+
+       /*
+        * This is used to remove the plug when tq_disk runs.
+        */
+       struct tq_struct        plug_tq;
+
+       /*
+        * Boolean that indicates whether this queue is plugged or not.
+        */
+       char                    plugged;
+
+       /*
+        * Boolean that indicates whether current_request is active or
+        * not.
+        */
+       char                    head_active;
+
+       unsigned long bounce_pfn; // XXX SMH: backported from 2.4.24
+
+       /*
+        * Is meant to protect the queue in the future instead of
+        * io_request_lock
+        */
+       spinlock_t              queue_lock;
+
+#if 0
+       /*
+        * Tasks wait here for free read and write requests
+        */
+       wait_queue_head_t       wait_for_requests[2];
+#endif
+};
+
+
+
+#ifdef CONFIG_HIGHMEM
+extern struct buffer_head *create_bounce(int, struct buffer_head *);
+extern inline struct buffer_head *blk_queue_bounce(request_queue_t *q, int rw,
+                                                  struct buffer_head *bh)
+{
+       struct page *page = bh->b_page;
+
+#ifndef CONFIG_DISCONTIGMEM
+       if (page - mem_map <= q->bounce_pfn)
+#else
+       if ((page - page_zone(page)->zone_mem_map) + (page_zone(page)->zone_start_paddr >> PAGE_SHIFT) <= q->bounce_pfn)
+#endif
+               return bh;
+
+       return create_bounce(rw, bh);
+}
+#else
+#define blk_queue_bounce(q, rw, bh)    (bh)
+#endif
+
+#define bh_phys(bh)            (page_to_phys((bh)->b_page) + bh_offset((bh)))
+
+#define BH_CONTIG(b1, b2)      (bh_phys((b1)) + (b1)->b_size == bh_phys((b2)))
+#define BH_PHYS_4G(b1, b2)     ((bh_phys((b1)) | 0xffffffff) == ((bh_phys((b2)) + (b2)->b_size - 1) | 0xffffffff))
+
+
+struct blk_dev_struct {
+       /*
+        * queue_proc has to be atomic
+        */
+       request_queue_t         request_queue;
+       queue_proc              *queue;
+       void                    *data;
+};
+
+struct sec_size {
+       unsigned block_size;
+       unsigned block_size_bits;
+};
+
+/*
+ * Used to indicate the default queue for drivers that don't bother
+ * to implement multiple queues.  We have this access macro here
+ * so as to eliminate the need for each and every block device
+ * driver to know about the internal structure of blk_dev[].
+ */
+#define BLK_DEFAULT_QUEUE(_MAJOR)  &blk_dev[_MAJOR].request_queue
+
+extern struct sec_size * blk_sec[MAX_BLKDEV];
+extern struct blk_dev_struct blk_dev[MAX_BLKDEV];
+extern void grok_partitions(struct gendisk *dev, int drive, unsigned minors, long size);
+extern void register_disk(struct gendisk *dev, kdev_t first, unsigned minors, struct block_device_operations *ops, long size);
+extern void generic_make_request(int rw, struct buffer_head * bh);
+extern inline request_queue_t *blk_get_queue(kdev_t dev);
+extern void blkdev_release_request(struct request *);
+
+/*
+ * Access functions for manipulating queue properties
+ */
+extern int blk_grow_request_list(request_queue_t *q, int nr_requests);
+extern void blk_init_queue(request_queue_t *, request_fn_proc *);
+extern void blk_cleanup_queue(request_queue_t *);
+extern void blk_queue_headactive(request_queue_t *, int);
+extern void blk_queue_make_request(request_queue_t *, make_request_fn *);
+extern void generic_unplug_device(void *);
+extern inline int blk_seg_merge_ok(struct buffer_head *, struct buffer_head *);
+
+extern int * blk_size[MAX_BLKDEV];
+
+extern int * blksize_size[MAX_BLKDEV];
+
+extern int * hardsect_size[MAX_BLKDEV];
+
+/*extern int * max_readahead[MAX_BLKDEV];*/
+
+extern int * max_sectors[MAX_BLKDEV];
+
+extern int * max_segments[MAX_BLKDEV];
+
+extern int read_ahead[];
+
+#define MAX_SEGMENTS 128
+#define MAX_SECTORS 255
+
+#define PageAlignSize(size) (((size) + PAGE_SIZE -1) & PAGE_MASK)
+
+#define blkdev_entry_to_request(entry) list_entry((entry), struct request, queue)
+#define blkdev_entry_next_request(entry) blkdev_entry_to_request((entry)->next)
+#define blkdev_entry_prev_request(entry) blkdev_entry_to_request((entry)->prev)
+#define blkdev_next_request(req) blkdev_entry_to_request((req)->queue.next)
+#define blkdev_prev_request(req) blkdev_entry_to_request((req)->queue.prev)
+
+extern void drive_stat_acct (kdev_t dev, int rw,
+                                       unsigned long nr_sectors, int new_io);
+
+static inline int get_hardsect_size(kdev_t dev)
+{
+       int retval = 512;
+       int major = MAJOR(dev);
+
+       if (hardsect_size[major]) {
+               int minor = MINOR(dev);
+               if (hardsect_size[major][minor])
+                       retval = hardsect_size[major][minor];
+       }
+       return retval;
+}
+
+#define blk_finished_io(nsects)        do { } while (0)
+#define blk_started_io(nsects) do { } while (0)
+
+static inline unsigned int blksize_bits(unsigned int size)
+{
+       unsigned int bits = 8;
+       do {
+               bits++;
+               size >>= 1;
+       } while (size > 256);
+       return bits;
+}
+
+static inline unsigned int block_size(kdev_t dev)
+{
+       int retval = BLOCK_SIZE;
+       int major = MAJOR(dev);
+
+       if (blksize_size[major]) {
+               int minor = MINOR(dev);
+               if (blksize_size[major][minor])
+                       retval = blksize_size[major][minor];
+       }
+       return retval;
+}
+
+
+
+#endif
diff --git a/xen/include/xen/blkpg.h b/xen/include/xen/blkpg.h
new file mode 100644 (file)
index 0000000..95963a8
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _LINUX_BLKPG_H
+#define _LINUX_BLKPG_H
+
+/*
+ * Partition table and disk geometry handling
+ *
+ * A single ioctl with lots of subfunctions:
+ *
+ * Device number stuff:
+ *    get_whole_disk()         (given the device number of a partition,
+ *                               find the device number of the encompassing disk)
+ *    get_all_partitions()     (given the device number of a disk, return the
+ *                              device numbers of all its known partitions)
+ *
+ * Partition stuff:
+ *    add_partition()
+ *    delete_partition()
+ *    test_partition_in_use()  (also for test_disk_in_use)
+ *
+ * Geometry stuff:
+ *    get_geometry()
+ *    set_geometry()
+ *    get_bios_drivedata()
+ *
+ * For today, only the partition stuff - aeb, 990515
+ */
+#include <xen/ioctl.h>
+
+#define BLKPG      _IO(0x12,105)
+
+/* The argument structure */
+struct blkpg_ioctl_arg {
+        int op;
+        int flags;
+        int datalen;
+        void *data;
+};
+
+/* The subfunctions (for the op field) */
+#define BLKPG_ADD_PARTITION    1
+#define BLKPG_DEL_PARTITION    2
+
+/* Sizes of name fields. Unused at present. */
+#define BLKPG_DEVNAMELTH       64
+#define BLKPG_VOLNAMELTH       64
+
+/* The data structure for ADD_PARTITION and DEL_PARTITION */
+struct blkpg_partition {
+       long long start;                /* starting offset in bytes */
+       long long length;               /* length in bytes */
+       int pno;                        /* partition number */
+       char devname[BLKPG_DEVNAMELTH]; /* partition name, like sda5 or c0d1p2,
+                                          to be used in kernel messages */
+       char volname[BLKPG_VOLNAMELTH]; /* volume label */
+};
+
+#ifdef __KERNEL__
+
+extern char * partition_name(kdev_t dev);
+extern int blk_ioctl(kdev_t dev, unsigned int cmd, unsigned long arg);
+
+#endif /* __KERNEL__ */
+
+#endif /* _LINUX_BLKPG_H */
diff --git a/xen/include/xen/brlock.h b/xen/include/xen/brlock.h
new file mode 100644 (file)
index 0000000..7dd322d
--- /dev/null
@@ -0,0 +1,220 @@
+#ifndef __LINUX_BRLOCK_H
+#define __LINUX_BRLOCK_H
+
+/*
+ * 'Big Reader' read-write spinlocks.
+ *
+ * super-fast read/write locks, with write-side penalty. The point
+ * is to have a per-CPU read/write lock. Readers lock their CPU-local
+ * readlock, writers must lock all locks to get write access. These
+ * CPU-read-write locks are semantically identical to normal rwlocks.
+ * Memory usage is higher as well. (NR_CPUS*L1_CACHE_BYTES bytes)
+ *
+ * The most important feature is that these spinlocks do not cause
+ * cacheline ping-pong in the 'most readonly data' case.
+ *
+ * Copyright 2000, Ingo Molnar <mingo@redhat.com>
+ *
+ * Registry idea and naming [ crutial! :-) ] by:
+ *
+ *                 David S. Miller <davem@redhat.com>
+ *
+ * David has an implementation that doesnt use atomic operations in
+ * the read branch via memory ordering tricks - i guess we need to
+ * split this up into a per-arch thing? The atomicity issue is a
+ * secondary item in profiles, at least on x86 platforms.
+ *
+ * The atomic op version overhead is indeed a big deal on
+ * load-locked/store-conditional cpus (ALPHA/MIPS/PPC) and
+ * compare-and-swap cpus (Sparc64).  So we control which
+ * implementation to use with a __BRLOCK_USE_ATOMICS define. -DaveM
+ */
+
+/* Register bigreader lock indices here. */
+enum brlock_indices {
+       BR_GLOBALIRQ_LOCK,
+       BR_NETPROTO_LOCK,
+
+       __BR_END
+};
+
+#include <xen/config.h>
+
+#ifdef CONFIG_SMP
+
+#include <xen/cache.h>
+#include <xen/spinlock.h>
+
+#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
+#define __BRLOCK_USE_ATOMICS
+#else
+#undef __BRLOCK_USE_ATOMICS
+#endif
+
+#ifdef __BRLOCK_USE_ATOMICS
+typedef rwlock_t       brlock_read_lock_t;
+#else
+typedef unsigned int   brlock_read_lock_t;
+#endif
+
+/*
+ * align last allocated index to the next cacheline:
+ */
+#define __BR_IDX_MAX \
+       (((sizeof(brlock_read_lock_t)*__BR_END + SMP_CACHE_BYTES-1) & ~(SMP_CACHE_BYTES-1)) / sizeof(brlock_read_lock_t))
+
+extern brlock_read_lock_t __brlock_array[NR_CPUS][__BR_IDX_MAX];
+
+#ifndef __BRLOCK_USE_ATOMICS
+struct br_wrlock {
+       spinlock_t lock;
+} __attribute__ ((__aligned__(SMP_CACHE_BYTES)));
+
+extern struct br_wrlock __br_write_locks[__BR_IDX_MAX];
+#endif
+
+extern void __br_lock_usage_bug (void);
+
+#ifdef __BRLOCK_USE_ATOMICS
+
+static inline void br_read_lock (enum brlock_indices idx)
+{
+       /*
+        * This causes a link-time bug message if an
+        * invalid index is used:
+        */
+       if (idx >= __BR_END)
+               __br_lock_usage_bug();
+
+       read_lock(&__brlock_array[smp_processor_id()][idx]);
+}
+
+static inline void br_read_unlock (enum brlock_indices idx)
+{
+       if (idx >= __BR_END)
+               __br_lock_usage_bug();
+
+       read_unlock(&__brlock_array[smp_processor_id()][idx]);
+}
+
+#else /* ! __BRLOCK_USE_ATOMICS */
+static inline void br_read_lock (enum brlock_indices idx)
+{
+       unsigned int *ctr;
+       spinlock_t *lock;
+
+       /*
+        * This causes a link-time bug message if an
+        * invalid index is used:
+        */
+       if (idx >= __BR_END)
+               __br_lock_usage_bug();
+
+       ctr = &__brlock_array[smp_processor_id()][idx];
+       lock = &__br_write_locks[idx].lock;
+again:
+       (*ctr)++;
+       mb();
+       if (spin_is_locked(lock)) {
+               (*ctr)--;
+               wmb(); /*
+                       * The release of the ctr must become visible
+                       * to the other cpus eventually thus wmb(),
+                       * we don't care if spin_is_locked is reordered
+                       * before the releasing of the ctr.
+                       * However IMHO this wmb() is superflous even in theory.
+                       * It would not be superflous only if on the
+                       * other CPUs doing a ldl_l instead of an ldl
+                       * would make a difference and I don't think this is
+                       * the case.
+                       * I'd like to clarify this issue further
+                       * but for now this is a slow path so adding the
+                       * wmb() will keep us on the safe side.
+                       */
+               while (spin_is_locked(lock))
+                       barrier();
+               goto again;
+       }
+}
+
+static inline void br_read_unlock (enum brlock_indices idx)
+{
+       unsigned int *ctr;
+
+       if (idx >= __BR_END)
+               __br_lock_usage_bug();
+
+       ctr = &__brlock_array[smp_processor_id()][idx];
+
+       wmb();
+       (*ctr)--;
+}
+#endif /* __BRLOCK_USE_ATOMICS */
+
+/* write path not inlined - it's rare and larger */
+
+extern void FASTCALL(__br_write_lock (enum brlock_indices idx));
+extern void FASTCALL(__br_write_unlock (enum brlock_indices idx));
+
+static inline void br_write_lock (enum brlock_indices idx)
+{
+       if (idx >= __BR_END)
+               __br_lock_usage_bug();
+       __br_write_lock(idx);
+}
+
+static inline void br_write_unlock (enum brlock_indices idx)
+{
+       if (idx >= __BR_END)
+               __br_lock_usage_bug();
+       __br_write_unlock(idx);
+}
+
+#else
+# define br_read_lock(idx)     ((void)(idx))
+# define br_read_unlock(idx)   ((void)(idx))
+# define br_write_lock(idx)    ((void)(idx))
+# define br_write_unlock(idx)  ((void)(idx))
+#endif
+
+/*
+ * Now enumerate all of the possible sw/hw IRQ protected
+ * versions of the interfaces.
+ */
+#define br_read_lock_irqsave(idx, flags) \
+       do { local_irq_save(flags); br_read_lock(idx); } while (0)
+
+#define br_read_lock_irq(idx) \
+       do { local_irq_disable(); br_read_lock(idx); } while (0)
+
+#define br_read_lock_bh(idx) \
+       do { local_bh_disable(); br_read_lock(idx); } while (0)
+
+#define br_write_lock_irqsave(idx, flags) \
+       do { local_irq_save(flags); br_write_lock(idx); } while (0)
+
+#define br_write_lock_irq(idx) \
+       do { local_irq_disable(); br_write_lock(idx); } while (0)
+
+#define br_write_lock_bh(idx) \
+       do { local_bh_disable(); br_write_lock(idx); } while (0)
+
+#define br_read_unlock_irqrestore(idx, flags) \
+       do { br_read_unlock(irx); local_irq_restore(flags); } while (0)
+
+#define br_read_unlock_irq(idx) \
+       do { br_read_unlock(idx); local_irq_enable(); } while (0)
+
+#define br_read_unlock_bh(idx) \
+       do { br_read_unlock(idx); local_bh_enable(); } while (0)
+
+#define br_write_unlock_irqrestore(idx, flags) \
+       do { br_write_unlock(irx); local_irq_restore(flags); } while (0)
+
+#define br_write_unlock_irq(idx) \
+       do { br_write_unlock(idx); local_irq_enable(); } while (0)
+
+#define br_write_unlock_bh(idx) \
+       do { br_write_unlock(idx); local_bh_enable(); } while (0)
+
+#endif /* __LINUX_BRLOCK_H */
diff --git a/xen/include/xen/byteorder/big_endian.h b/xen/include/xen/byteorder/big_endian.h
new file mode 100644 (file)
index 0000000..f0ef375
--- /dev/null
@@ -0,0 +1,68 @@
+#ifndef _LINUX_BYTEORDER_BIG_ENDIAN_H
+#define _LINUX_BYTEORDER_BIG_ENDIAN_H
+
+#ifndef __BIG_ENDIAN
+#define __BIG_ENDIAN 4321
+#endif
+#ifndef __BIG_ENDIAN_BITFIELD
+#define __BIG_ENDIAN_BITFIELD
+#endif
+
+#include <xen/byteorder/swab.h>
+
+#define __constant_htonl(x) ((__u32)(x))
+#define __constant_ntohl(x) ((__u32)(x))
+#define __constant_htons(x) ((__u16)(x))
+#define __constant_ntohs(x) ((__u16)(x))
+#define __constant_cpu_to_le64(x) ___constant_swab64((x))
+#define __constant_le64_to_cpu(x) ___constant_swab64((x))
+#define __constant_cpu_to_le32(x) ___constant_swab32((x))
+#define __constant_le32_to_cpu(x) ___constant_swab32((x))
+#define __constant_cpu_to_le16(x) ___constant_swab16((x))
+#define __constant_le16_to_cpu(x) ___constant_swab16((x))
+#define __constant_cpu_to_be64(x) ((__u64)(x))
+#define __constant_be64_to_cpu(x) ((__u64)(x))
+#define __constant_cpu_to_be32(x) ((__u32)(x))
+#define __constant_be32_to_cpu(x) ((__u32)(x))
+#define __constant_cpu_to_be16(x) ((__u16)(x))
+#define __constant_be16_to_cpu(x) ((__u16)(x))
+#define __cpu_to_le64(x) __swab64((x))
+#define __le64_to_cpu(x) __swab64((x))
+#define __cpu_to_le32(x) __swab32((x))
+#define __le32_to_cpu(x) __swab32((x))
+#define __cpu_to_le16(x) __swab16((x))
+#define __le16_to_cpu(x) __swab16((x))
+#define __cpu_to_be64(x) ((__u64)(x))
+#define __be64_to_cpu(x) ((__u64)(x))
+#define __cpu_to_be32(x) ((__u32)(x))
+#define __be32_to_cpu(x) ((__u32)(x))
+#define __cpu_to_be16(x) ((__u16)(x))
+#define __be16_to_cpu(x) ((__u16)(x))
+#define __cpu_to_le64p(x) __swab64p((x))
+#define __le64_to_cpup(x) __swab64p((x))
+#define __cpu_to_le32p(x) __swab32p((x))
+#define __le32_to_cpup(x) __swab32p((x))
+#define __cpu_to_le16p(x) __swab16p((x))
+#define __le16_to_cpup(x) __swab16p((x))
+#define __cpu_to_be64p(x) (*(__u64*)(x))
+#define __be64_to_cpup(x) (*(__u64*)(x))
+#define __cpu_to_be32p(x) (*(__u32*)(x))
+#define __be32_to_cpup(x) (*(__u32*)(x))
+#define __cpu_to_be16p(x) (*(__u16*)(x))
+#define __be16_to_cpup(x) (*(__u16*)(x))
+#define __cpu_to_le64s(x) __swab64s((x))
+#define __le64_to_cpus(x) __swab64s((x))
+#define __cpu_to_le32s(x) __swab32s((x))
+#define __le32_to_cpus(x) __swab32s((x))
+#define __cpu_to_le16s(x) __swab16s((x))
+#define __le16_to_cpus(x) __swab16s((x))
+#define __cpu_to_be64s(x) do {} while (0)
+#define __be64_to_cpus(x) do {} while (0)
+#define __cpu_to_be32s(x) do {} while (0)
+#define __be32_to_cpus(x) do {} while (0)
+#define __cpu_to_be16s(x) do {} while (0)
+#define __be16_to_cpus(x) do {} while (0)
+
+#include <xen/byteorder/generic.h>
+
+#endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */
diff --git a/xen/include/xen/byteorder/generic.h b/xen/include/xen/byteorder/generic.h
new file mode 100644 (file)
index 0000000..d3d63a5
--- /dev/null
@@ -0,0 +1,180 @@
+#ifndef _LINUX_BYTEORDER_GENERIC_H
+#define _LINUX_BYTEORDER_GENERIC_H
+
+/*
+ * linux/byteorder_generic.h
+ * Generic Byte-reordering support
+ *
+ * Francois-Rene Rideau <fare@tunes.org> 19970707
+ *    gathered all the good ideas from all asm-foo/byteorder.h into one file,
+ *    cleaned them up.
+ *    I hope it is compliant with non-GCC compilers.
+ *    I decided to put __BYTEORDER_HAS_U64__ in byteorder.h,
+ *    because I wasn't sure it would be ok to put it in types.h
+ *    Upgraded it to 2.1.43
+ * Francois-Rene Rideau <fare@tunes.org> 19971012
+ *    Upgraded it to 2.1.57
+ *    to please Linus T., replaced huge #ifdef's between little/big endian
+ *    by nestedly #include'd files.
+ * Francois-Rene Rideau <fare@tunes.org> 19971205
+ *    Made it to 2.1.71; now a facelift:
+ *    Put files under include/linux/byteorder/
+ *    Split swab from generic support.
+ *
+ * TODO:
+ *   = Regular kernel maintainers could also replace all these manual
+ *    byteswap macros that remain, disseminated among drivers,
+ *    after some grep or the sources...
+ *   = Linus might want to rename all these macros and files to fit his taste,
+ *    to fit his personal naming scheme.
+ *   = it seems that a few drivers would also appreciate
+ *    nybble swapping support...
+ *   = every architecture could add their byteswap macro in asm/byteorder.h
+ *    see how some architectures already do (i386, alpha, ppc, etc)
+ *   = cpu_to_beXX and beXX_to_cpu might some day need to be well
+ *    distinguished throughout the kernel. This is not the case currently,
+ *    since little endian, big endian, and pdp endian machines needn't it.
+ *    But this might be the case for, say, a port of Linux to 20/21 bit
+ *    architectures (and F21 Linux addict around?).
+ */
+
+/*
+ * The following macros are to be defined by <asm/byteorder.h>:
+ *
+ * Conversion of long and short int between network and host format
+ *     ntohl(__u32 x)
+ *     ntohs(__u16 x)
+ *     htonl(__u32 x)
+ *     htons(__u16 x)
+ * It seems that some programs (which? where? or perhaps a standard? POSIX?)
+ * might like the above to be functions, not macros (why?).
+ * if that's true, then detect them, and take measures.
+ * Anyway, the measure is: define only ___ntohl as a macro instead,
+ * and in a separate file, have
+ * unsigned long inline ntohl(x){return ___ntohl(x);}
+ *
+ * The same for constant arguments
+ *     __constant_ntohl(__u32 x)
+ *     __constant_ntohs(__u16 x)
+ *     __constant_htonl(__u32 x)
+ *     __constant_htons(__u16 x)
+ *
+ * Conversion of XX-bit integers (16- 32- or 64-)
+ * between native CPU format and little/big endian format
+ * 64-bit stuff only defined for proper architectures
+ *     cpu_to_[bl]eXX(__uXX x)
+ *     [bl]eXX_to_cpu(__uXX x)
+ *
+ * The same, but takes a pointer to the value to convert
+ *     cpu_to_[bl]eXXp(__uXX x)
+ *     [bl]eXX_to_cpup(__uXX x)
+ *
+ * The same, but change in situ
+ *     cpu_to_[bl]eXXs(__uXX x)
+ *     [bl]eXX_to_cpus(__uXX x)
+ *
+ * See asm-foo/byteorder.h for examples of how to provide
+ * architecture-optimized versions
+ *
+ */
+
+
+#if defined(__KERNEL__)
+/*
+ * inside the kernel, we can use nicknames;
+ * outside of it, we must avoid POSIX namespace pollution...
+ */
+#define cpu_to_le64 __cpu_to_le64
+#define le64_to_cpu __le64_to_cpu
+#define cpu_to_le32 __cpu_to_le32
+#define le32_to_cpu __le32_to_cpu
+#define cpu_to_le16 __cpu_to_le16
+#define le16_to_cpu __le16_to_cpu
+#define cpu_to_be64 __cpu_to_be64
+#define be64_to_cpu __be64_to_cpu
+#define cpu_to_be32 __cpu_to_be32
+#define be32_to_cpu __be32_to_cpu
+#define cpu_to_be16 __cpu_to_be16
+#define be16_to_cpu __be16_to_cpu
+#define cpu_to_le64p __cpu_to_le64p
+#define le64_to_cpup __le64_to_cpup
+#define cpu_to_le32p __cpu_to_le32p
+#define le32_to_cpup __le32_to_cpup
+#define cpu_to_le16p __cpu_to_le16p
+#define le16_to_cpup __le16_to_cpup
+#define cpu_to_be64p __cpu_to_be64p
+#define be64_to_cpup __be64_to_cpup
+#define cpu_to_be32p __cpu_to_be32p
+#define be32_to_cpup __be32_to_cpup
+#define cpu_to_be16p __cpu_to_be16p
+#define be16_to_cpup __be16_to_cpup
+#define cpu_to_le64s __cpu_to_le64s
+#define le64_to_cpus __le64_to_cpus
+#define cpu_to_le32s __cpu_to_le32s
+#define le32_to_cpus __le32_to_cpus
+#define cpu_to_le16s __cpu_to_le16s
+#define le16_to_cpus __le16_to_cpus
+#define cpu_to_be64s __cpu_to_be64s
+#define be64_to_cpus __be64_to_cpus
+#define cpu_to_be32s __cpu_to_be32s
+#define be32_to_cpus __be32_to_cpus
+#define cpu_to_be16s __cpu_to_be16s
+#define be16_to_cpus __be16_to_cpus
+#endif
+
+
+/*
+ * Handle ntohl and suches. These have various compatibility
+ * issues - like we want to give the prototype even though we
+ * also have a macro for them in case some strange program
+ * wants to take the address of the thing or something..
+ *
+ * Note that these used to return a "long" in libc5, even though
+ * long is often 64-bit these days.. Thus the casts.
+ *
+ * They have to be macros in order to do the constant folding
+ * correctly - if the argument passed into a inline function
+ * it is no longer constant according to gcc..
+ */
+
+#undef ntohl
+#undef ntohs
+#undef htonl
+#undef htons
+
+/*
+ * Do the prototypes. Somebody might want to take the
+ * address or some such sick thing..
+ */
+#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >= 2)
+extern __u32                   ntohl(__u32);
+extern __u32                   htonl(__u32);
+#else
+extern unsigned long int       ntohl(unsigned long int);
+extern unsigned long int       htonl(unsigned long int);
+#endif
+extern unsigned short int      ntohs(unsigned short int);
+extern unsigned short int      htons(unsigned short int);
+
+
+#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
+
+#define ___htonl(x) __cpu_to_be32(x)
+#define ___htons(x) __cpu_to_be16(x)
+#define ___ntohl(x) __be32_to_cpu(x)
+#define ___ntohs(x) __be16_to_cpu(x)
+
+#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >= 2)
+#define htonl(x) ___htonl(x)
+#define ntohl(x) ___ntohl(x)
+#else
+#define htonl(x) ((unsigned long)___htonl(x))
+#define ntohl(x) ((unsigned long)___ntohl(x))
+#endif
+#define htons(x) ___htons(x)
+#define ntohs(x) ___ntohs(x)
+
+#endif /* OPTIMIZE */
+
+
+#endif /* _LINUX_BYTEORDER_GENERIC_H */
diff --git a/xen/include/xen/byteorder/little_endian.h b/xen/include/xen/byteorder/little_endian.h
new file mode 100644 (file)
index 0000000..0b735f1
--- /dev/null
@@ -0,0 +1,68 @@
+#ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H
+#define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
+
+#ifndef __LITTLE_ENDIAN
+#define __LITTLE_ENDIAN 1234
+#endif
+#ifndef __LITTLE_ENDIAN_BITFIELD
+#define __LITTLE_ENDIAN_BITFIELD
+#endif
+
+#include <xen/byteorder/swab.h>
+
+#define __constant_htonl(x) ___constant_swab32((x))
+#define __constant_ntohl(x) ___constant_swab32((x))
+#define __constant_htons(x) ___constant_swab16((x))
+#define __constant_ntohs(x) ___constant_swab16((x))
+#define __constant_cpu_to_le64(x) ((__u64)(x))
+#define __constant_le64_to_cpu(x) ((__u64)(x))
+#define __constant_cpu_to_le32(x) ((__u32)(x))
+#define __constant_le32_to_cpu(x) ((__u32)(x))
+#define __constant_cpu_to_le16(x) ((__u16)(x))
+#define __constant_le16_to_cpu(x) ((__u16)(x))
+#define __constant_cpu_to_be64(x) ___constant_swab64((x))
+#define __constant_be64_to_cpu(x) ___constant_swab64((x))
+#define __constant_cpu_to_be32(x) ___constant_swab32((x))
+#define __constant_be32_to_cpu(x) ___constant_swab32((x))
+#define __constant_cpu_to_be16(x) ___constant_swab16((x))
+#define __constant_be16_to_cpu(x) ___constant_swab16((x))
+#define __cpu_to_le64(x) ((__u64)(x))
+#define __le64_to_cpu(x) ((__u64)(x))
+#define __cpu_to_le32(x) ((__u32)(x))
+#define __le32_to_cpu(x) ((__u32)(x))
+#define __cpu_to_le16(x) ((__u16)(x))
+#define __le16_to_cpu(x) ((__u16)(x))
+#define __cpu_to_be64(x) __swab64((x))
+#define __be64_to_cpu(x) __swab64((x))
+#define __cpu_to_be32(x) __swab32((x))
+#define __be32_to_cpu(x) __swab32((x))
+#define __cpu_to_be16(x) __swab16((x))
+#define __be16_to_cpu(x) __swab16((x))
+#define __cpu_to_le64p(x) (*(__u64*)(x))
+#define __le64_to_cpup(x) (*(__u64*)(x))
+#define __cpu_to_le32p(x) (*(__u32*)(x))
+#define __le32_to_cpup(x) (*(__u32*)(x))
+#define __cpu_to_le16p(x) (*(__u16*)(x))
+#define __le16_to_cpup(x) (*(__u16*)(x))
+#define __cpu_to_be64p(x) __swab64p((x))
+#define __be64_to_cpup(x) __swab64p((x))
+#define __cpu_to_be32p(x) __swab32p((x))
+#define __be32_to_cpup(x) __swab32p((x))
+#define __cpu_to_be16p(x) __swab16p((x))
+#define __be16_to_cpup(x) __swab16p((x))
+#define __cpu_to_le64s(x) do {} while (0)
+#define __le64_to_cpus(x) do {} while (0)
+#define __cpu_to_le32s(x) do {} while (0)
+#define __le32_to_cpus(x) do {} while (0)
+#define __cpu_to_le16s(x) do {} while (0)
+#define __le16_to_cpus(x) do {} while (0)
+#define __cpu_to_be64s(x) __swab64s((x))
+#define __be64_to_cpus(x) __swab64s((x))
+#define __cpu_to_be32s(x) __swab32s((x))
+#define __be32_to_cpus(x) __swab32s((x))
+#define __cpu_to_be16s(x) __swab16s((x))
+#define __be16_to_cpus(x) __swab16s((x))
+
+#include <xen/byteorder/generic.h>
+
+#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */
diff --git a/xen/include/xen/byteorder/pdp_endian.h b/xen/include/xen/byteorder/pdp_endian.h
new file mode 100644 (file)
index 0000000..a88d6fe
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _LINUX_BYTEORDER_PDP_ENDIAN_H
+#define _LINUX_BYTEORDER_PDP_ENDIAN_H
+
+/*
+ * Could have been named NUXI-endian, but we use the same name as in glibc.
+ * hopefully only the PDP and its evolutions (old VAXen in compatibility mode)
+ * should ever use this braindead byteorder.
+ * This file *should* work, but has not been tested.
+ *
+ * little-endian is 1234; big-endian is 4321; nuxi/pdp-endian is 3412
+ *
+ * I thought vaxen were NUXI-endian, but was told they were correct-endian
+ * (little-endian), though indeed there existed NUXI-endian machines
+ * (DEC PDP-11 and old VAXen in compatibility mode).
+ * This makes this file a bit useless, but as a proof-of-concept.
+ *
+ * But what does a __u64 look like: is it 34127856 or 78563412 ???
+ * I don't dare imagine! Hence, no 64-bit byteorder support yet.
+ * Hopefully, there 64-bit pdp-endian support shouldn't ever be required.
+ *
+ */
+
+#ifndef __PDP_ENDIAN
+#define __PDP_ENDIAN 3412
+#endif
+#ifndef __PDP_ENDIAN_BITFIELD
+#define __PDP_ENDIAN_BITFIELD
+#endif
+
+#include <xen/byteorder/swab.h>
+#include <xen/byteorder/swabb.h>
+
+#define __constant_htonl(x) ___constant_swahb32((x))
+#define __constant_ntohl(x) ___constant_swahb32((x))
+#define __constant_htons(x) ___constant_swab16((x))
+#define __constant_ntohs(x) ___constant_swab16((x))
+#define __constant_cpu_to_le64(x) I DON'T KNOW
+#define __constant_le64_to_cpu(x) I DON'T KNOW
+#define __constant_cpu_to_le32(x) ___constant_swahw32((x))
+#define __constant_le32_to_cpu(x) ___constant_swahw32((x))
+#define __constant_cpu_to_le16(x) ((__u16)(x)
+#define __constant_le16_to_cpu(x) ((__u16)(x)
+#define __constant_cpu_to_be64(x) I DON'T KNOW
+#define __constant_be64_to_cpu(x) I DON'T KNOW
+#define __constant_cpu_to_be32(x) ___constant_swahb32((x))
+#define __constant_be32_to_cpu(x) ___constant_swahb32((x))
+#define __constant_cpu_to_be16(x) ___constant_swab16((x))
+#define __constant_be16_to_cpu(x) ___constant_swab16((x))
+#define __cpu_to_le64(x) I DON'T KNOW
+#define __le64_to_cpu(x) I DON'T KNOW
+#define __cpu_to_le32(x) ___swahw32((x))
+#define __le32_to_cpu(x) ___swahw32((x))
+#define __cpu_to_le16(x) ((__u16)(x)
+#define __le16_to_cpu(x) ((__u16)(x)
+#define __cpu_to_be64(x) I DON'T KNOW
+#define __be64_to_cpu(x) I DON'T KNOW
+#define __cpu_to_be32(x) __swahb32((x))
+#define __be32_to_cpu(x) __swahb32((x))
+#define __cpu_to_be16(x) __swab16((x))
+#define __be16_to_cpu(x) __swab16((x))
+#define __cpu_to_le64p(x) I DON'T KNOW
+#define __le64_to_cpup(x) I DON'T KNOW
+#define __cpu_to_le32p(x) ___swahw32p((x))
+#define __le32_to_cpup(x) ___swahw32p((x))
+#define __cpu_to_le16p(x) (*(__u16*)(x))
+#define __le16_to_cpup(x) (*(__u16*)(x))
+#define __cpu_to_be64p(x) I DON'T KNOW
+#define __be64_to_cpup(x) I DON'T KNOW
+#define __cpu_to_be32p(x) __swahb32p((x))
+#define __be32_to_cpup(x) __swahb32p((x))
+#define __cpu_to_be16p(x) __swab16p((x))
+#define __be16_to_cpup(x) __swab16p((x))
+#define __cpu_to_le64s(x) I DON'T KNOW
+#define __le64_to_cpus(x) I DON'T KNOW
+#define __cpu_to_le32s(x) ___swahw32s((x))
+#define __le32_to_cpus(x) ___swahw32s((x))
+#define __cpu_to_le16s(x) do {} while (0)
+#define __le16_to_cpus(x) do {} while (0)
+#define __cpu_to_be64s(x) I DON'T KNOW
+#define __be64_to_cpus(x) I DON'T KNOW
+#define __cpu_to_be32s(x) __swahb32s((x))
+#define __be32_to_cpus(x) __swahb32s((x))
+#define __cpu_to_be16s(x) __swab16s((x))
+#define __be16_to_cpus(x) __swab16s((x))
+
+#include <xen/byteorder/generic.h>
+
+#endif /* _LINUX_BYTEORDER_PDP_ENDIAN_H */
diff --git a/xen/include/xen/byteorder/swab.h b/xen/include/xen/byteorder/swab.h
new file mode 100644 (file)
index 0000000..814b451
--- /dev/null
@@ -0,0 +1,190 @@
+#ifndef _LINUX_BYTEORDER_SWAB_H
+#define _LINUX_BYTEORDER_SWAB_H
+
+/*
+ * linux/byteorder/swab.h
+ * Byte-swapping, independently from CPU endianness
+ *     swabXX[ps]?(foo)
+ *
+ * Francois-Rene Rideau <fare@tunes.org> 19971205
+ *    separated swab functions from cpu_to_XX,
+ *    to clean up support for bizarre-endian architectures.
+ *
+ * See asm-i386/byteorder.h and suches for examples of how to provide
+ * architecture-dependent optimized versions
+ *
+ */
+
+/* casts are necessary for constants, because we never know how for sure
+ * how U/UL/ULL map to __u16, __u32, __u64. At least not in a portable way.
+ */
+#define ___swab16(x) \
+({ \
+       __u16 __x = (x); \
+       ((__u16)( \
+               (((__u16)(__x) & (__u16)0x00ffU) << 8) | \
+               (((__u16)(__x) & (__u16)0xff00U) >> 8) )); \
+})
+
+#define ___swab32(x) \
+({ \
+       __u32 __x = (x); \
+       ((__u32)( \
+               (((__u32)(__x) & (__u32)0x000000ffUL) << 24) | \
+               (((__u32)(__x) & (__u32)0x0000ff00UL) <<  8) | \
+               (((__u32)(__x) & (__u32)0x00ff0000UL) >>  8) | \
+               (((__u32)(__x) & (__u32)0xff000000UL) >> 24) )); \
+})
+
+#define ___swab64(x) \
+({ \
+       __u64 __x = (x); \
+       ((__u64)( \
+               (__u64)(((__u64)(__x) & (__u64)0x00000000000000ffULL) << 56) | \
+               (__u64)(((__u64)(__x) & (__u64)0x000000000000ff00ULL) << 40) | \
+               (__u64)(((__u64)(__x) & (__u64)0x0000000000ff0000ULL) << 24) | \
+               (__u64)(((__u64)(__x) & (__u64)0x00000000ff000000ULL) <<  8) | \
+               (__u64)(((__u64)(__x) & (__u64)0x000000ff00000000ULL) >>  8) | \
+               (__u64)(((__u64)(__x) & (__u64)0x0000ff0000000000ULL) >> 24) | \
+               (__u64)(((__u64)(__x) & (__u64)0x00ff000000000000ULL) >> 40) | \
+               (__u64)(((__u64)(__x) & (__u64)0xff00000000000000ULL) >> 56) )); \
+})
+
+#define ___constant_swab16(x) \
+       ((__u16)( \
+               (((__u16)(x) & (__u16)0x00ffU) << 8) | \
+               (((__u16)(x) & (__u16)0xff00U) >> 8) ))
+#define ___constant_swab32(x) \
+       ((__u32)( \
+               (((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
+               (((__u32)(x) & (__u32)0x0000ff00UL) <<  8) | \
+               (((__u32)(x) & (__u32)0x00ff0000UL) >>  8) | \
+               (((__u32)(x) & (__u32)0xff000000UL) >> 24) ))
+#define ___constant_swab64(x) \
+       ((__u64)( \
+               (__u64)(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \
+               (__u64)(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \
+               (__u64)(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \
+               (__u64)(((__u64)(x) & (__u64)0x00000000ff000000ULL) <<  8) | \
+               (__u64)(((__u64)(x) & (__u64)0x000000ff00000000ULL) >>  8) | \
+               (__u64)(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) | \
+               (__u64)(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) | \
+               (__u64)(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56) ))
+
+/*
+ * provide defaults when no architecture-specific optimization is detected
+ */
+#ifndef __arch__swab16
+#  define __arch__swab16(x) ({ __u16 __tmp = (x) ; ___swab16(__tmp); })
+#endif
+#ifndef __arch__swab32
+#  define __arch__swab32(x) ({ __u32 __tmp = (x) ; ___swab32(__tmp); })
+#endif
+#ifndef __arch__swab64
+#  define __arch__swab64(x) ({ __u64 __tmp = (x) ; ___swab64(__tmp); })
+#endif
+
+#ifndef __arch__swab16p
+#  define __arch__swab16p(x) __arch__swab16(*(x))
+#endif
+#ifndef __arch__swab32p
+#  define __arch__swab32p(x) __arch__swab32(*(x))
+#endif
+#ifndef __arch__swab64p
+#  define __arch__swab64p(x) __arch__swab64(*(x))
+#endif
+
+#ifndef __arch__swab16s
+#  define __arch__swab16s(x) do { *(x) = __arch__swab16p((x)); } while (0)
+#endif
+#ifndef __arch__swab32s
+#  define __arch__swab32s(x) do { *(x) = __arch__swab32p((x)); } while (0)
+#endif
+#ifndef __arch__swab64s
+#  define __arch__swab64s(x) do { *(x) = __arch__swab64p((x)); } while (0)
+#endif
+
+
+/*
+ * Allow constant folding
+ */
+#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
+#  define __swab16(x) \
+(__builtin_constant_p((__u16)(x)) ? \
+ ___swab16((x)) : \
+ __fswab16((x)))
+#  define __swab32(x) \
+(__builtin_constant_p((__u32)(x)) ? \
+ ___swab32((x)) : \
+ __fswab32((x)))
+#  define __swab64(x) \
+(__builtin_constant_p((__u64)(x)) ? \
+ ___swab64((x)) : \
+ __fswab64((x)))
+#else
+#  define __swab16(x) __fswab16(x)
+#  define __swab32(x) __fswab32(x)
+#  define __swab64(x) __fswab64(x)
+#endif /* OPTIMIZE */
+
+
+static __inline__ __const__ __u16 __fswab16(__u16 x)
+{
+       return __arch__swab16(x);
+}
+static __inline__ __u16 __swab16p(__u16 *x)
+{
+       return __arch__swab16p(x);
+}
+static __inline__ void __swab16s(__u16 *addr)
+{
+       __arch__swab16s(addr);
+}
+
+static __inline__ __const__ __u32 __fswab32(__u32 x)
+{
+       return __arch__swab32(x);
+}
+static __inline__ __u32 __swab32p(__u32 *x)
+{
+       return __arch__swab32p(x);
+}
+static __inline__ void __swab32s(__u32 *addr)
+{
+       __arch__swab32s(addr);
+}
+
+#ifdef __BYTEORDER_HAS_U64__
+static __inline__ __const__ __u64 __fswab64(__u64 x)
+{
+#  ifdef __SWAB_64_THRU_32__
+       __u32 h = x >> 32;
+        __u32 l = x & ((1ULL<<32)-1);
+        return (((__u64)__swab32(l)) << 32) | ((__u64)(__swab32(h)));
+#  else
+       return __arch__swab64(x);
+#  endif
+}
+static __inline__ __u64 __swab64p(__u64 *x)
+{
+       return __arch__swab64p(x);
+}
+static __inline__ void __swab64s(__u64 *addr)
+{
+       __arch__swab64s(addr);
+}
+#endif /* __BYTEORDER_HAS_U64__ */
+
+#if defined(__KERNEL__)
+#define swab16 __swab16
+#define swab32 __swab32
+#define swab64 __swab64
+#define swab16p __swab16p
+#define swab32p __swab32p
+#define swab64p __swab64p
+#define swab16s __swab16s
+#define swab32s __swab32s
+#define swab64s __swab64s
+#endif
+
+#endif /* _LINUX_BYTEORDER_SWAB_H */
diff --git a/xen/include/xen/byteorder/swabb.h b/xen/include/xen/byteorder/swabb.h
new file mode 100644 (file)
index 0000000..d28d9a8
--- /dev/null
@@ -0,0 +1,137 @@
+#ifndef _LINUX_BYTEORDER_SWABB_H
+#define _LINUX_BYTEORDER_SWABB_H
+
+/*
+ * linux/byteorder/swabb.h
+ * SWAp Bytes Bizarrely
+ *     swaHHXX[ps]?(foo)
+ *
+ * Support for obNUXIous pdp-endian and other bizarre architectures.
+ * Will Linux ever run on such ancient beasts? if not, this file
+ * will be but a programming pearl. Still, it's a reminder that we
+ * shouldn't be making too many assumptions when trying to be portable.
+ *
+ */
+
+/*
+ * Meaning of the names I chose (vaxlinux people feel free to correct them):
+ * swahw32     swap 16-bit half-words in a 32-bit word
+ * swahb32     swap 8-bit halves of each 16-bit half-word in a 32-bit word
+ *
+ * No 64-bit support yet. I don't know NUXI conventions for long longs.
+ * I guarantee it will be a mess when it's there, though :->
+ * It will be even worse if there are conflicting 64-bit conventions.
+ * Hopefully, no one ever used 64-bit objects on NUXI machines.
+ *
+ */
+
+#define ___swahw32(x) \
+({ \
+       __u32 __x = (x); \
+       ((__u32)( \
+               (((__u32)(__x) & (__u32)0x0000ffffUL) << 16) | \
+               (((__u32)(__x) & (__u32)0xffff0000UL) >> 16) )); \
+})
+#define ___swahb32(x) \
+({ \
+       __u32 __x = (x); \
+       ((__u32)( \
+               (((__u32)(__x) & (__u32)0x00ff00ffUL) << 8) | \
+               (((__u32)(__x) & (__u32)0xff00ff00UL) >> 8) )); \
+})
+
+#define ___constant_swahw32(x) \
+       ((__u32)( \
+               (((__u32)(x) & (__u32)0x0000ffffUL) << 16) | \
+               (((__u32)(x) & (__u32)0xffff0000UL) >> 16) ))
+#define ___constant_swahb32(x) \
+       ((__u32)( \
+               (((__u32)(x) & (__u32)0x00ff00ffUL) << 8) | \
+               (((__u32)(x) & (__u32)0xff00ff00UL) >> 8) ))
+
+/*
+ * provide defaults when no architecture-specific optimization is detected
+ */
+#ifndef __arch__swahw32
+#  define __arch__swahw32(x) ___swahw32(x)
+#endif
+#ifndef __arch__swahb32
+#  define __arch__swahb32(x) ___swahb32(x)
+#endif
+
+#ifndef __arch__swahw32p
+#  define __arch__swahw32p(x) __swahw32(*(x))
+#endif
+#ifndef __arch__swahb32p
+#  define __arch__swahb32p(x) __swahb32(*(x))
+#endif
+
+#ifndef __arch__swahw32s
+#  define __arch__swahw32s(x) do { *(x) = __swahw32p((x)); } while (0)
+#endif
+#ifndef __arch__swahb32s
+#  define __arch__swahb32s(x) do { *(x) = __swahb32p((x)); } while (0)
+#endif
+
+
+/*
+ * Allow constant folding
+ */
+#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
+#  define __swahw32(x) \
+(__builtin_constant_p((__u32)(x)) ? \
+ ___swahw32((x)) : \
+ __fswahw32((x)))
+#  define __swahb32(x) \
+(__builtin_constant_p((__u32)(x)) ? \
+ ___swahb32((x)) : \
+ __fswahb32((x)))
+#else
+#  define __swahw32(x) __fswahw32(x)
+#  define __swahb32(x) __fswahb32(x)
+#endif /* OPTIMIZE */
+
+
+static __inline__ __const__ __u32 __fswahw32(__u32 x)
+{
+       return __arch__swahw32(x);
+}
+static __inline__ __u32 __swahw32p(__u32 *x)
+{
+       return __arch__swahw32p(x);
+}
+static __inline__ void __swahw32s(__u32 *addr)
+{
+       __arch__swahw32s(addr);
+}
+
+
+static __inline__ __const__ __u32 __fswahb32(__u32 x)
+{
+       return __arch__swahb32(x);
+}
+static __inline__ __u32 __swahb32p(__u32 *x)
+{
+       return __arch__swahb32p(x);
+}
+static __inline__ void __swahb32s(__u32 *addr)
+{
+       __arch__swahb32s(addr);
+}
+
+#ifdef __BYTEORDER_HAS_U64__
+/*
+ * Not supported yet
+ */
+#endif /* __BYTEORDER_HAS_U64__ */
+
+#if defined(__KERNEL__)
+#define swahw32 __swahw32
+#define swahb32 __swahb32
+#define swahw32p __swahw32p
+#define swahb32p __swahb32p
+#define swahw32s __swahw32s
+#define swahb32s __swahb32s
+#endif
+
+#endif /* _LINUX_BYTEORDER_SWABB_H */
diff --git a/xen/include/xen/cache.h b/xen/include/xen/cache.h
new file mode 100644 (file)
index 0000000..320867f
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef __LINUX_CACHE_H
+#define __LINUX_CACHE_H
+
+#include <xen/config.h>
+#include <asm/cache.h>
+
+#ifndef L1_CACHE_ALIGN
+#define L1_CACHE_ALIGN(x) (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1))
+#endif
+
+#ifndef SMP_CACHE_BYTES
+#define SMP_CACHE_BYTES L1_CACHE_BYTES
+#endif
+
+#ifndef ____cacheline_aligned
+#define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
+#endif
+
+#ifndef ____cacheline_aligned_in_smp
+#ifdef CONFIG_SMP
+#define ____cacheline_aligned_in_smp ____cacheline_aligned
+#else
+#define ____cacheline_aligned_in_smp
+#endif /* CONFIG_SMP */
+#endif
+
+#ifndef __cacheline_aligned
+#ifdef MODULE
+#define __cacheline_aligned ____cacheline_aligned
+#else
+#define __cacheline_aligned                                    \
+  __attribute__((__aligned__(SMP_CACHE_BYTES),                 \
+                __section__(".data.cacheline_aligned")))
+#endif
+#endif /* __cacheline_aligned */
+
+#endif /* __LINUX_CACHE_H */
diff --git a/xen/include/xen/cdrom.h b/xen/include/xen/cdrom.h
new file mode 100644 (file)
index 0000000..6144a1f
--- /dev/null
@@ -0,0 +1,1067 @@
+/*
+ * -- <xen/cdrom.h>
+ * General header file for linux CD-ROM drivers 
+ * Copyright (C) 1992         David Giller, rafetmad@oxy.edu
+ *               1994, 1995   Eberhard Moenkeberg, emoenke@gwdg.de
+ *               1996         David van Leeuwen, david@tm.tno.nl
+ *               1997, 1998   Erik Andersen, andersee@debian.org
+ *               1998-2000    Jens Axboe, axboe@suse.de
+ */
+#ifndef        _LINUX_CDROM_H
+#define        _LINUX_CDROM_H
+
+#include <asm/byteorder.h>
+
+/*******************************************************
+ * As of Linux 2.1.x, all Linux CD-ROM application programs will use this 
+ * (and only this) include file.  It is my hope to provide Linux with
+ * a uniform interface between software accessing CD-ROMs and the various 
+ * device drivers that actually talk to the drives.  There may still be
+ * 23 different kinds of strange CD-ROM drives, but at least there will 
+ * now be one, and only one, Linux CD-ROM interface.
+ *
+ * Additionally, as of Linux 2.1.x, all Linux application programs 
+ * should use the O_NONBLOCK option when opening a CD-ROM device 
+ * for subsequent ioctl commands.  This allows for neat system errors 
+ * like "No medium found" or "Wrong medium type" upon attempting to 
+ * mount or play an empty slot, mount an audio disc, or play a data disc.
+ * Generally, changing an application program to support O_NONBLOCK
+ * is as easy as the following:
+ *       -    drive = open("/dev/cdrom", O_RDONLY);
+ *       +    drive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK);
+ * It is worth the small change.
+ *
+ *  Patches for many common CD programs (provided by David A. van Leeuwen)
+ *  can be found at:  ftp://ftp.gwdg.de/pub/linux/cdrom/drivers/cm206/
+ * 
+ *******************************************************/
+
+/* When a driver supports a certain function, but the cdrom drive we are 
+ * using doesn't, we will return the error EDRIVE_CANT_DO_THIS.  We will 
+ * borrow the "Operation not supported" error from the network folks to 
+ * accomplish this.  Maybe someday we will get a more targeted error code, 
+ * but this will do for now... */
+#define EDRIVE_CANT_DO_THIS  EOPNOTSUPP
+
+/*******************************************************
+ * The CD-ROM IOCTL commands  -- these should be supported by 
+ * all the various cdrom drivers.  For the CD-ROM ioctls, we 
+ * will commandeer byte 0x53, or 'S'.
+ *******************************************************/
+#define CDROMPAUSE             0x5301 /* Pause Audio Operation */ 
+#define CDROMRESUME            0x5302 /* Resume paused Audio Operation */
+#define CDROMPLAYMSF           0x5303 /* Play Audio MSF (struct cdrom_msf) */
+#define CDROMPLAYTRKIND                0x5304 /* Play Audio Track/index 
+                                           (struct cdrom_ti) */
+#define CDROMREADTOCHDR                0x5305 /* Read TOC header 
+                                           (struct cdrom_tochdr) */
+#define CDROMREADTOCENTRY      0x5306 /* Read TOC entry 
+                                           (struct cdrom_tocentry) */
+#define CDROMSTOP              0x5307 /* Stop the cdrom drive */
+#define CDROMSTART             0x5308 /* Start the cdrom drive */
+#define CDROMEJECT             0x5309 /* Ejects the cdrom media */
+#define CDROMVOLCTRL           0x530a /* Control output volume 
+                                           (struct cdrom_volctrl) */
+#define CDROMSUBCHNL           0x530b /* Read subchannel data 
+                                           (struct cdrom_subchnl) */
+#define CDROMREADMODE2         0x530c /* Read CDROM mode 2 data (2336 Bytes) 
+                                           (struct cdrom_read) */
+#define CDROMREADMODE1         0x530d /* Read CDROM mode 1 data (2048 Bytes)
+                                           (struct cdrom_read) */
+#define CDROMREADAUDIO         0x530e /* (struct cdrom_read_audio) */
+#define CDROMEJECT_SW          0x530f /* enable(1)/disable(0) auto-ejecting */
+#define CDROMMULTISESSION      0x5310 /* Obtain the start-of-last-session 
+                                           address of multi session disks 
+                                           (struct cdrom_multisession) */
+#define CDROM_GET_MCN          0x5311 /* Obtain the "Universal Product Code" 
+                                           if available (struct cdrom_mcn) */
+#define CDROM_GET_UPC          CDROM_GET_MCN  /* This one is depricated, 
+                                          but here anyway for compatability */
+#define CDROMRESET             0x5312 /* hard-reset the drive */
+#define CDROMVOLREAD           0x5313 /* Get the drive's volume setting 
+                                          (struct cdrom_volctrl) */
+#define CDROMREADRAW           0x5314  /* read data in raw mode (2352 Bytes)
+                                           (struct cdrom_read) */
+/* 
+ * These ioctls are used only used in aztcd.c and optcd.c
+ */
+#define CDROMREADCOOKED                0x5315  /* read data in cooked mode */
+#define CDROMSEEK              0x5316  /* seek msf address */
+  
+/*
+ * This ioctl is only used by the scsi-cd driver.  
+   It is for playing audio in logical block addressing mode.
+ */
+#define CDROMPLAYBLK           0x5317  /* (struct cdrom_blk) */
+
+/* 
+ * These ioctls are only used in optcd.c
+ */
+#define CDROMREADALL           0x5318  /* read all 2646 bytes */
+
+/* 
+ * These ioctls are (now) only in ide-cd.c for controlling 
+ * drive spindown time.  They should be implemented in the
+ * Uniform driver, via generic packet commands, GPCMD_MODE_SELECT_10,
+ * GPCMD_MODE_SENSE_10 and the GPMODE_POWER_PAGE...
+ *  -Erik
+ */
+#define CDROMGETSPINDOWN        0x531d
+#define CDROMSETSPINDOWN        0x531e
+
+/* 
+ * These ioctls are implemented through the uniform CD-ROM driver
+ * They _will_ be adopted by all CD-ROM drivers, when all the CD-ROM
+ * drivers are eventually ported to the uniform CD-ROM driver interface.
+ */
+#define CDROMCLOSETRAY         0x5319  /* pendant of CDROMEJECT */
+#define CDROM_SET_OPTIONS      0x5320  /* Set behavior options */
+#define CDROM_CLEAR_OPTIONS    0x5321  /* Clear behavior options */
+#define CDROM_SELECT_SPEED     0x5322  /* Set the CD-ROM speed */
+#define CDROM_SELECT_DISC      0x5323  /* Select disc (for juke-boxes) */
+#define CDROM_MEDIA_CHANGED    0x5325  /* Check is media changed  */
+#define CDROM_DRIVE_STATUS     0x5326  /* Get tray position, etc. */
+#define CDROM_DISC_STATUS      0x5327  /* Get disc type, etc. */
+#define CDROM_CHANGER_NSLOTS    0x5328  /* Get number of slots */
+#define CDROM_LOCKDOOR         0x5329  /* lock or unlock door */
+#define CDROM_DEBUG            0x5330  /* Turn debug messages on/off */
+#define CDROM_GET_CAPABILITY   0x5331  /* get capabilities */
+
+/* Note that scsi/scsi_ioctl.h also uses 0x5382 - 0x5386.
+ * Future CDROM ioctls should be kept below 0x537F
+ */
+
+/* This ioctl is only used by sbpcd at the moment */
+#define CDROMAUDIOBUFSIZ        0x5382 /* set the audio buffer size */
+                                       /* conflict with SCSI_IOCTL_GET_IDLUN */
+
+/* DVD-ROM Specific ioctls */
+#define DVD_READ_STRUCT                0x5390  /* Read structure */
+#define DVD_WRITE_STRUCT       0x5391  /* Write structure */
+#define DVD_AUTH               0x5392  /* Authentication */
+
+#define CDROM_SEND_PACKET      0x5393  /* send a packet to the drive */
+#define CDROM_NEXT_WRITABLE    0x5394  /* get next writable block */
+#define CDROM_LAST_WRITTEN     0x5395  /* get last block written on disc */
+
+/*******************************************************
+ * CDROM IOCTL structures
+ *******************************************************/
+
+/* Address in MSF format */
+struct cdrom_msf0              
+{
+       __u8    minute;
+       __u8    second;
+       __u8    frame;
+};
+
+/* Address in either MSF or logical format */
+union cdrom_addr               
+{
+       struct cdrom_msf0       msf;
+       int                     lba;
+};
+
+/* This struct is used by the CDROMPLAYMSF ioctl */ 
+struct cdrom_msf 
+{
+       __u8    cdmsf_min0;     /* start minute */
+       __u8    cdmsf_sec0;     /* start second */
+       __u8    cdmsf_frame0;   /* start frame */
+       __u8    cdmsf_min1;     /* end minute */
+       __u8    cdmsf_sec1;     /* end second */
+       __u8    cdmsf_frame1;   /* end frame */
+};
+
+/* This struct is used by the CDROMPLAYTRKIND ioctl */
+struct cdrom_ti 
+{
+       __u8    cdti_trk0;      /* start track */
+       __u8    cdti_ind0;      /* start index */
+       __u8    cdti_trk1;      /* end track */
+       __u8    cdti_ind1;      /* end index */
+};
+
+/* This struct is used by the CDROMREADTOCHDR ioctl */
+struct cdrom_tochdr    
+{
+       __u8    cdth_trk0;      /* start track */
+       __u8    cdth_trk1;      /* end track */
+};
+
+/* This struct is used by the CDROMVOLCTRL and CDROMVOLREAD ioctls */
+struct cdrom_volctrl
+{
+       __u8    channel0;
+       __u8    channel1;
+       __u8    channel2;
+       __u8    channel3;
+};
+
+/* This struct is used by the CDROMSUBCHNL ioctl */
+struct cdrom_subchnl 
+{
+       __u8    cdsc_format;
+       __u8    cdsc_audiostatus;
+       __u8    cdsc_adr:       4;
+       __u8    cdsc_ctrl:      4;
+       __u8    cdsc_trk;
+       __u8    cdsc_ind;
+       union cdrom_addr cdsc_absaddr;
+       union cdrom_addr cdsc_reladdr;
+};
+
+
+/* This struct is used by the CDROMREADTOCENTRY ioctl */
+struct cdrom_tocentry 
+{
+       __u8    cdte_track;
+       __u8    cdte_adr        :4;
+       __u8    cdte_ctrl       :4;
+       __u8    cdte_format;
+       union cdrom_addr cdte_addr;
+       __u8    cdte_datamode;
+};
+
+/* This struct is used by the CDROMREADMODE1, and CDROMREADMODE2 ioctls */
+struct cdrom_read      
+{
+       int     cdread_lba;
+       char    *cdread_bufaddr;
+       int     cdread_buflen;
+};
+
+/* This struct is used by the CDROMREADAUDIO ioctl */
+struct cdrom_read_audio
+{
+       union cdrom_addr addr; /* frame address */
+       __u8 addr_format;    /* CDROM_LBA or CDROM_MSF */
+       int nframes;           /* number of 2352-byte-frames to read at once */
+       __u8 *buf;           /* frame buffer (size: nframes*2352 bytes) */
+};
+
+/* This struct is used with the CDROMMULTISESSION ioctl */
+struct cdrom_multisession
+{
+       union cdrom_addr addr; /* frame address: start-of-last-session 
+                                  (not the new "frame 16"!).  Only valid
+                                  if the "xa_flag" is true. */
+       __u8 xa_flag;        /* 1: "is XA disk" */
+       __u8 addr_format;    /* CDROM_LBA or CDROM_MSF */
+};
+
+/* This struct is used with the CDROM_GET_MCN ioctl.  
+ * Very few audio discs actually have Universal Product Code information, 
+ * which should just be the Medium Catalog Number on the box.  Also note 
+ * that the way the codeis written on CD is _not_ uniform across all discs!
+ */  
+struct cdrom_mcn 
+{
+  __u8 medium_catalog_number[14]; /* 13 ASCII digits, null-terminated */
+};
+
+/* This is used by the CDROMPLAYBLK ioctl */
+struct cdrom_blk 
+{
+       unsigned from;
+       unsigned short len;
+};
+
+#define CDROM_PACKET_SIZE      12
+
+#define CGC_DATA_UNKNOWN       0
+#define CGC_DATA_WRITE         1
+#define CGC_DATA_READ          2
+#define CGC_DATA_NONE          3
+
+/* for CDROM_PACKET_COMMAND ioctl */
+struct cdrom_generic_command
+{
+       unsigned char           cmd[CDROM_PACKET_SIZE];
+       unsigned char           *buffer;
+       unsigned int            buflen;
+       int                     stat;
+       struct request_sense    *sense;
+       unsigned char           data_direction;
+       int                     quiet;
+       int                     timeout;
+       void                    *reserved[1];
+};
+
+
+/*
+ * A CD-ROM physical sector size is 2048, 2052, 2056, 2324, 2332, 2336, 
+ * 2340, or 2352 bytes long.  
+
+*         Sector types of the standard CD-ROM data formats:
+ *
+ * format   sector type               user data size (bytes)
+ * -----------------------------------------------------------------------------
+ *   1     (Red Book)    CD-DA          2352    (CD_FRAMESIZE_RAW)
+ *   2     (Yellow Book) Mode1 Form1    2048    (CD_FRAMESIZE)
+ *   3     (Yellow Book) Mode1 Form2    2336    (CD_FRAMESIZE_RAW0)
+ *   4     (Green Book)  Mode2 Form1    2048    (CD_FRAMESIZE)
+ *   5     (Green Book)  Mode2 Form2    2328    (2324+4 spare bytes)
+ *
+ *
+ *       The layout of the standard CD-ROM data formats:
+ * -----------------------------------------------------------------------------
+ * - audio (red):                  | audio_sample_bytes |
+ *                                 |        2352        |
+ *
+ * - data (yellow, mode1):         | sync - head - data - EDC - zero - ECC |
+ *                                 |  12  -   4  - 2048 -  4  -   8  - 276 |
+ *
+ * - data (yellow, mode2):         | sync - head - data |
+ *                                 |  12  -   4  - 2336 |
+ *
+ * - XA data (green, mode2 form1): | sync - head - sub - data - EDC - ECC |
+ *                                 |  12  -   4  -  8  - 2048 -  4  - 276 |
+ *
+ * - XA data (green, mode2 form2): | sync - head - sub - data - Spare |
+ *                                 |  12  -   4  -  8  - 2324 -  4    |
+ *
+ */
+
+/* Some generally useful CD-ROM information -- mostly based on the above */
+#define CD_MINS              74 /* max. minutes per CD, not really a limit */
+#define CD_SECS              60 /* seconds per minute */
+#define CD_FRAMES            75 /* frames per second */
+#define CD_SYNC_SIZE         12 /* 12 sync bytes per raw data frame */
+#define CD_MSF_OFFSET       150 /* MSF numbering offset of first frame */
+#define CD_CHUNK_SIZE        24 /* lowest-level "data bytes piece" */
+#define CD_NUM_OF_CHUNKS     98 /* chunks per frame */
+#define CD_FRAMESIZE_SUB     96 /* subchannel data "frame" size */
+#define CD_HEAD_SIZE          4 /* header (address) bytes per raw data frame */
+#define CD_SUBHEAD_SIZE       8 /* subheader bytes per raw XA data frame */
+#define CD_EDC_SIZE           4 /* bytes EDC per most raw data frame types */
+#define CD_ZERO_SIZE          8 /* bytes zero per yellow book mode 1 frame */
+#define CD_ECC_SIZE         276 /* bytes ECC per most raw data frame types */
+#define CD_FRAMESIZE       2048 /* bytes per frame, "cooked" mode */
+#define CD_FRAMESIZE_RAW   2352 /* bytes per frame, "raw" mode */
+#define CD_FRAMESIZE_RAWER 2646 /* The maximum possible returned bytes */ 
+/* most drives don't deliver everything: */
+#define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE) /*2340*/
+#define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE) /*2336*/
+
+#define CD_XA_HEAD        (CD_HEAD_SIZE+CD_SUBHEAD_SIZE) /* "before data" part of raw XA frame */
+#define CD_XA_TAIL        (CD_EDC_SIZE+CD_ECC_SIZE) /* "after data" part of raw XA frame */
+#define CD_XA_SYNC_HEAD   (CD_SYNC_SIZE+CD_XA_HEAD) /* sync bytes + header of XA frame */
+
+/* CD-ROM address types (cdrom_tocentry.cdte_format) */
+#define        CDROM_LBA 0x01 /* "logical block": first frame is #0 */
+#define        CDROM_MSF 0x02 /* "minute-second-frame": binary, not bcd here! */
+
+/* bit to tell whether track is data or audio (cdrom_tocentry.cdte_ctrl) */
+#define        CDROM_DATA_TRACK        0x04
+
+/* The leadout track is always 0xAA, regardless of # of tracks on disc */
+#define        CDROM_LEADOUT           0xAA
+
+/* audio states (from SCSI-2, but seen with other drives, too) */
+#define        CDROM_AUDIO_INVALID     0x00    /* audio status not supported */
+#define        CDROM_AUDIO_PLAY        0x11    /* audio play operation in progress */
+#define        CDROM_AUDIO_PAUSED      0x12    /* audio play operation paused */
+#define        CDROM_AUDIO_COMPLETED   0x13    /* audio play successfully completed */
+#define        CDROM_AUDIO_ERROR       0x14    /* audio play stopped due to error */
+#define        CDROM_AUDIO_NO_STATUS   0x15    /* no current audio status to return */
+
+/* capability flags used with the uniform CD-ROM driver */ 
+#define CDC_CLOSE_TRAY         0x1     /* caddy systems _can't_ close */
+#define CDC_OPEN_TRAY          0x2     /* but _can_ eject.  */
+#define CDC_LOCK               0x4     /* disable manual eject */
+#define CDC_SELECT_SPEED       0x8     /* programmable speed */
+#define CDC_SELECT_DISC                0x10    /* select disc from juke-box */
+#define CDC_MULTI_SESSION      0x20    /* read sessions>1 */
+#define CDC_MCN                        0x40    /* Medium Catalog Number */
+#define CDC_MEDIA_CHANGED      0x80    /* media changed */
+#define CDC_PLAY_AUDIO         0x100   /* audio functions */
+#define CDC_RESET               0x200   /* hard reset device */
+#define CDC_IOCTLS              0x400   /* driver has non-standard ioctls */
+#define CDC_DRIVE_STATUS        0x800   /* driver implements drive status */
+#define CDC_GENERIC_PACKET     0x1000  /* driver implements generic packets */
+#define CDC_CD_R               0x2000  /* drive is a CD-R */
+#define CDC_CD_RW              0x4000  /* drive is a CD-RW */
+#define CDC_DVD                        0x8000  /* drive is a DVD */
+#define CDC_DVD_R              0x10000 /* drive can write DVD-R */
+#define CDC_DVD_RAM            0x20000 /* drive can write DVD-RAM */
+
+/* drive status possibilities returned by CDROM_DRIVE_STATUS ioctl */
+#define CDS_NO_INFO            0       /* if not implemented */
+#define CDS_NO_DISC            1
+#define CDS_TRAY_OPEN          2
+#define CDS_DRIVE_NOT_READY    3
+#define CDS_DISC_OK            4
+
+/* return values for the CDROM_DISC_STATUS ioctl */
+/* can also return CDS_NO_[INFO|DISC], from above */
+#define CDS_AUDIO              100
+#define CDS_DATA_1             101
+#define CDS_DATA_2             102
+#define CDS_XA_2_1             103
+#define CDS_XA_2_2             104
+#define CDS_MIXED              105
+
+/* User-configurable behavior options for the uniform CD-ROM driver */
+#define CDO_AUTO_CLOSE         0x1     /* close tray on first open() */
+#define CDO_AUTO_EJECT         0x2     /* open tray on last release() */
+#define CDO_USE_FFLAGS         0x4     /* use O_NONBLOCK information on open */
+#define CDO_LOCK               0x8     /* lock tray on open files */
+#define CDO_CHECK_TYPE         0x10    /* check type on open for data */
+
+/* Special codes used when specifying changer slots. */
+#define CDSL_NONE              ((int) (~0U>>1)-1)
+#define CDSL_CURRENT           ((int) (~0U>>1))
+
+/* For partition based multisession access. IDE can handle 64 partitions
+ * per drive - SCSI CD-ROM's use minors to differentiate between the
+ * various drives, so we can't do multisessions the same way there.
+ * Use the -o session=x option to mount on them.
+ */
+#define CD_PART_MAX            64
+#define CD_PART_MASK           (CD_PART_MAX - 1)
+
+/*********************************************************************
+ * Generic Packet commands, MMC commands, and such
+ *********************************************************************/
+
+ /* The generic packet command opcodes for CD/DVD Logical Units,
+ * From Table 57 of the SFF8090 Ver. 3 (Mt. Fuji) draft standard. */
+#define GPCMD_BLANK                        0xa1
+#define GPCMD_CLOSE_TRACK                  0x5b
+#define GPCMD_FLUSH_CACHE                  0x35
+#define GPCMD_FORMAT_UNIT                  0x04
+#define GPCMD_GET_CONFIGURATION                    0x46
+#define GPCMD_GET_EVENT_STATUS_NOTIFICATION 0x4a
+#define GPCMD_GET_PERFORMANCE              0xac
+#define GPCMD_INQUIRY                      0x12
+#define GPCMD_LOAD_UNLOAD                  0xa6
+#define GPCMD_MECHANISM_STATUS             0xbd
+#define GPCMD_MODE_SELECT_10               0x55
+#define GPCMD_MODE_SENSE_10                0x5a
+#define GPCMD_PAUSE_RESUME                 0x4b
+#define GPCMD_PLAY_AUDIO_10                0x45
+#define GPCMD_PLAY_AUDIO_MSF               0x47
+#define GPCMD_PLAY_AUDIO_TI                0x48
+#define GPCMD_PLAY_CD                      0xbc
+#define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL  0x1e
+#define GPCMD_READ_10                      0x28
+#define GPCMD_READ_12                      0xa8
+#define GPCMD_READ_CDVD_CAPACITY           0x25
+#define GPCMD_READ_CD                      0xbe
+#define GPCMD_READ_CD_MSF                  0xb9
+#define GPCMD_READ_DISC_INFO               0x51
+#define GPCMD_READ_DVD_STRUCTURE           0xad
+#define GPCMD_READ_FORMAT_CAPACITIES       0x23
+#define GPCMD_READ_HEADER                  0x44
+#define GPCMD_READ_TRACK_RZONE_INFO        0x52
+#define GPCMD_READ_SUBCHANNEL              0x42
+#define GPCMD_READ_TOC_PMA_ATIP                    0x43
+#define GPCMD_REPAIR_RZONE_TRACK           0x58
+#define GPCMD_REPORT_KEY                   0xa4
+#define GPCMD_REQUEST_SENSE                0x03
+#define GPCMD_RESERVE_RZONE_TRACK          0x53
+#define GPCMD_SCAN                         0xba
+#define GPCMD_SEEK                         0x2b
+#define GPCMD_SEND_DVD_STRUCTURE           0xad
+#define GPCMD_SEND_EVENT                   0xa2
+#define GPCMD_SEND_KEY                     0xa3
+#define GPCMD_SEND_OPC                     0x54
+#define GPCMD_SET_READ_AHEAD               0xa7
+#define GPCMD_SET_STREAMING                0xb6
+#define GPCMD_START_STOP_UNIT              0x1b
+#define GPCMD_STOP_PLAY_SCAN               0x4e
+#define GPCMD_TEST_UNIT_READY              0x00
+#define GPCMD_VERIFY_10                            0x2f
+#define GPCMD_WRITE_10                     0x2a
+#define GPCMD_WRITE_AND_VERIFY_10          0x2e
+/* This is listed as optional in ATAPI 2.6, but is (curiously) 
+ * missing from Mt. Fuji, Table 57.  It _is_ mentioned in Mt. Fuji
+ * Table 377 as an MMC command for SCSi devices though...  Most ATAPI
+ * drives support it. */
+#define GPCMD_SET_SPEED                            0xbb
+/* This seems to be a SCSI specific CD-ROM opcode 
+ * to play data at track/index */
+#define GPCMD_PLAYAUDIO_TI                 0x48
+/*
+ * From MS Media Status Notification Support Specification. For
+ * older drives only.
+ */
+#define GPCMD_GET_MEDIA_STATUS             0xda
+
+/* Mode page codes for mode sense/set */
+#define GPMODE_R_W_ERROR_PAGE          0x01
+#define GPMODE_WRITE_PARMS_PAGE                0x05
+#define GPMODE_AUDIO_CTL_PAGE          0x0e
+#define GPMODE_POWER_PAGE              0x1a
+#define GPMODE_FAULT_FAIL_PAGE         0x1c
+#define GPMODE_TO_PROTECT_PAGE         0x1d
+#define GPMODE_CAPABILITIES_PAGE       0x2a
+#define GPMODE_ALL_PAGES               0x3f
+/* Not in Mt. Fuji, but in ATAPI 2.6 -- depricated now in favor
+ * of MODE_SENSE_POWER_PAGE */
+#define GPMODE_CDROM_PAGE              0x0d
+
+
+
+/* DVD struct types */
+#define DVD_STRUCT_PHYSICAL    0x00
+#define DVD_STRUCT_COPYRIGHT   0x01
+#define DVD_STRUCT_DISCKEY     0x02
+#define DVD_STRUCT_BCA         0x03
+#define DVD_STRUCT_MANUFACT    0x04
+
+struct dvd_layer {
+       __u8 book_version       : 4;
+       __u8 book_type          : 4;
+       __u8 min_rate           : 4;
+       __u8 disc_size          : 4;
+       __u8 layer_type         : 4;
+       __u8 track_path         : 1;
+       __u8 nlayers            : 2;
+       __u8 track_density      : 4;
+       __u8 linear_density     : 4;
+       __u8 bca                : 1;
+       __u32 start_sector;
+       __u32 end_sector;
+       __u32 end_sector_l0;
+};
+
+#define DVD_LAYERS     4
+
+struct dvd_physical {
+       __u8 type;
+       __u8 layer_num;
+       struct dvd_layer layer[DVD_LAYERS];
+};
+
+struct dvd_copyright {
+       __u8 type;
+
+       __u8 layer_num;
+       __u8 cpst;
+       __u8 rmi;
+};
+
+struct dvd_disckey {
+       __u8 type;
+
+       unsigned agid           : 2;
+       __u8 value[2048];
+};
+
+struct dvd_bca {
+       __u8 type;
+
+       int len;
+       __u8 value[188];
+};
+
+struct dvd_manufact {
+       __u8 type;
+
+       __u8 layer_num;
+       int len;
+       __u8 value[2048];
+};
+
+typedef union {
+       __u8 type;
+
+       struct dvd_physical     physical;
+       struct dvd_copyright    copyright;
+       struct dvd_disckey      disckey;
+       struct dvd_bca          bca;
+       struct dvd_manufact     manufact;
+} dvd_struct;
+
+/*
+ * DVD authentication ioctl
+ */
+
+/* Authentication states */
+#define DVD_LU_SEND_AGID       0
+#define DVD_HOST_SEND_CHALLENGE        1
+#define DVD_LU_SEND_KEY1       2
+#define DVD_LU_SEND_CHALLENGE  3
+#define DVD_HOST_SEND_KEY2     4
+
+/* Termination states */
+#define DVD_AUTH_ESTABLISHED   5
+#define DVD_AUTH_FAILURE       6
+
+/* Other functions */
+#define DVD_LU_SEND_TITLE_KEY  7
+#define DVD_LU_SEND_ASF                8
+#define DVD_INVALIDATE_AGID    9
+#define DVD_LU_SEND_RPC_STATE  10
+#define DVD_HOST_SEND_RPC_STATE        11
+
+/* State data */
+typedef __u8 dvd_key[5];               /* 40-bit value, MSB is first elem. */
+typedef __u8 dvd_challenge[10];        /* 80-bit value, MSB is first elem. */
+
+struct dvd_lu_send_agid {
+       __u8 type;
+       unsigned agid           : 2;
+};
+
+struct dvd_host_send_challenge {
+       __u8 type;
+       unsigned agid           : 2;
+
+       dvd_challenge chal;
+};
+
+struct dvd_send_key {
+       __u8 type;
+       unsigned agid           : 2;
+
+       dvd_key key;
+};
+
+struct dvd_lu_send_challenge {
+       __u8 type;
+       unsigned agid           : 2;
+
+       dvd_challenge chal;
+};
+
+#define DVD_CPM_NO_COPYRIGHT   0
+#define DVD_CPM_COPYRIGHTED    1
+
+#define DVD_CP_SEC_NONE                0
+#define DVD_CP_SEC_EXIST       1
+
+#define DVD_CGMS_UNRESTRICTED  0
+#define DVD_CGMS_SINGLE                2
+#define DVD_CGMS_RESTRICTED    3
+
+struct dvd_lu_send_title_key {
+       __u8 type;
+       unsigned agid           : 2;
+
+       dvd_key title_key;
+       int lba;
+       unsigned cpm            : 1;
+       unsigned cp_sec         : 1;
+       unsigned cgms           : 2;
+};
+
+struct dvd_lu_send_asf {
+       __u8 type;
+       unsigned agid           : 2;
+
+       unsigned asf            : 1;
+};
+
+struct dvd_host_send_rpcstate {
+       __u8 type;
+       __u8 pdrc;
+};
+
+struct dvd_lu_send_rpcstate {
+       __u8 type               : 2;
+       __u8 vra                : 3;
+       __u8 ucca               : 3;
+       __u8 region_mask;
+       __u8 rpc_scheme;
+};
+
+typedef union {
+       __u8 type;
+
+       struct dvd_lu_send_agid         lsa;
+       struct dvd_host_send_challenge  hsc;
+       struct dvd_send_key             lsk;
+       struct dvd_lu_send_challenge    lsc;
+       struct dvd_send_key             hsk;
+       struct dvd_lu_send_title_key    lstk;
+       struct dvd_lu_send_asf          lsasf;
+       struct dvd_host_send_rpcstate   hrpcs;
+       struct dvd_lu_send_rpcstate     lrpcs;
+} dvd_authinfo;
+
+struct request_sense {
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 valid              : 1;
+       __u8 error_code         : 7;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+       __u8 error_code         : 7;
+       __u8 valid              : 1;
+#endif
+       __u8 segment_number;
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 reserved1          : 2;
+       __u8 ili                : 1;
+       __u8 reserved2          : 1;
+       __u8 sense_key          : 4;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+       __u8 sense_key          : 4;
+       __u8 reserved2          : 1;
+       __u8 ili                : 1;
+       __u8 reserved1          : 2;
+#endif
+       __u8 information[4];
+       __u8 add_sense_len;
+       __u8 command_info[4];
+       __u8 asc;
+       __u8 ascq;
+       __u8 fruc;
+       __u8 sks[3];
+       __u8 asb[46];
+};
+
+#ifdef __KERNEL__
+#if 0
+#include <xen/devfs_fs_kernel.h>
+#else
+#include <xen/kdev_t.h>
+#endif
+
+struct cdrom_write_settings {
+       unsigned char fpacket;          /* fixed/variable packets */
+       unsigned long packet_size;      /* write out this number of packets */
+       unsigned long nwa;              /* next writeable address */
+       unsigned char writeable;        /* cdrom is writeable */
+};
+
+/* Uniform cdrom data structures for cdrom.c */
+struct cdrom_device_info {
+       struct cdrom_device_ops  *ops;  /* link to device_ops */
+       struct cdrom_device_info *next; /* next device_info for this major */
+       void *handle;                   /* driver-dependent data */
+#if 0
+       devfs_handle_t de;              /* real driver should create this  */
+#endif
+       int number;                     /* generic driver updates this  */
+/* specifications */
+        kdev_t dev;                    /* device number */
+       int mask;                       /* mask of capability: disables them */
+       int speed;                      /* maximum speed for reading data */
+       int capacity;                   /* number of discs in jukebox */
+/* device-related storage */
+       int options             : 30;   /* options flags */
+       unsigned mc_flags       : 2;    /* media change buffer flags */
+       int use_count;                  /* number of times device opened */
+       char name[20];                  /* name of the device type */
+/* per-device flags */
+        __u8 sanyo_slot                : 2;    /* Sanyo 3 CD changer support */
+        __u8 reserved          : 6;    /* not used yet */
+       struct cdrom_write_settings write;
+};
+
+struct cdrom_device_ops {
+/* routines */
+       int (*open) (struct cdrom_device_info *, int);
+       void (*release) (struct cdrom_device_info *);
+       int (*drive_status) (struct cdrom_device_info *, int);
+       int (*media_changed) (struct cdrom_device_info *, int);
+       int (*tray_move) (struct cdrom_device_info *, int);
+       int (*lock_door) (struct cdrom_device_info *, int);
+       int (*select_speed) (struct cdrom_device_info *, int);
+       int (*select_disc) (struct cdrom_device_info *, int);
+       int (*get_last_session) (struct cdrom_device_info *,
+                                struct cdrom_multisession *);
+       int (*get_mcn) (struct cdrom_device_info *,
+                       struct cdrom_mcn *);
+       /* hard reset device */
+       int (*reset) (struct cdrom_device_info *);
+       /* play stuff */
+       int (*audio_ioctl) (struct cdrom_device_info *,unsigned int, void *);
+       /* dev-specific */
+       int (*dev_ioctl) (struct cdrom_device_info *,
+                         unsigned int, unsigned long);
+/* driver specifications */
+       const int capability;   /* capability flags */
+       int n_minors;           /* number of active minor devices */
+       /* handle uniform packets for scsi type devices (scsi,atapi) */
+       int (*generic_packet) (struct cdrom_device_info *,
+                              struct cdrom_generic_command *);
+};
+
+/* the general block_device operations structure: */
+#include <xen/blkdev.h> /* XXX SMH: pull in wafer thin file and inode defns */
+extern int cdrom_open(struct inode *, struct file *);
+extern int cdrom_release(struct inode *, struct file *);
+extern int cdrom_ioctl(struct inode *, struct file *, unsigned, unsigned long);
+extern int cdrom_media_changed(kdev_t);
+
+extern int register_cdrom(struct cdrom_device_info *cdi);
+extern int unregister_cdrom(struct cdrom_device_info *cdi);
+
+#if 0
+static inline void devfs_plain_cdrom(struct cdrom_device_info *cdi,
+                               struct block_device_operations *ops)
+{
+       char vname[23];
+
+       sprintf (vname, "cdroms/cdrom%d", cdi->number);
+       cdi->de = devfs_register (NULL, vname, DEVFS_FL_DEFAULT,
+                                   MAJOR (cdi->dev), MINOR (cdi->dev),
+                                   S_IFBLK | S_IRUGO | S_IWUGO,
+                                   ops, NULL);
+}
+#endif
+
+typedef struct {
+    int data;
+    int audio;
+    int cdi;
+    int xa;
+    long error;
+} tracktype;
+
+extern void cdrom_count_tracks(struct cdrom_device_info *cdi,tracktype* tracks);
+extern int cdrom_get_next_writable(kdev_t dev, long *next_writable);
+extern int cdrom_get_last_written(kdev_t dev, long *last_written);
+extern int cdrom_number_of_slots(struct cdrom_device_info *cdi);
+extern int cdrom_select_disc(struct cdrom_device_info *cdi, int slot);
+extern int cdrom_mode_select(struct cdrom_device_info *cdi,
+                            struct cdrom_generic_command *cgc);
+extern int cdrom_mode_sense(struct cdrom_device_info *cdi,
+                           struct cdrom_generic_command *cgc,
+                           int page_code, int page_control);
+extern void init_cdrom_command(struct cdrom_generic_command *cgc,
+                              void *buffer, int len, int type);
+extern struct cdrom_device_info *cdrom_find_device(kdev_t dev);
+
+typedef struct {
+       __u16 disc_information_length;
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 reserved1                  : 3;
+        __u8 erasable                  : 1;
+        __u8 border_status             : 2;
+        __u8 disc_status               : 2;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+        __u8 disc_status               : 2;
+        __u8 border_status             : 2;
+        __u8 erasable                  : 1;
+       __u8 reserved1                  : 3;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+       __u8 n_first_track;
+       __u8 n_sessions_lsb;
+       __u8 first_track_lsb;
+       __u8 last_track_lsb;
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 did_v                      : 1;
+        __u8 dbc_v                     : 1;
+        __u8 uru                       : 1;
+        __u8 reserved2                 : 5;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+        __u8 reserved2                 : 5;
+        __u8 uru                       : 1;
+        __u8 dbc_v                     : 1;
+       __u8 did_v                      : 1;
+#endif
+       __u8 disc_type;
+       __u8 n_sessions_msb;
+       __u8 first_track_msb;
+       __u8 last_track_msb;
+       __u32 disc_id;
+       __u32 lead_in;
+       __u32 lead_out;
+       __u8 disc_bar_code[8];
+       __u8 reserved3;
+       __u8 n_opc;
+} disc_information;
+
+typedef struct {
+       __u16 track_information_length;
+       __u8 track_lsb;
+       __u8 session_lsb;
+       __u8 reserved1;
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 reserved2                  : 2;
+        __u8 damage                    : 1;
+        __u8 copy                      : 1;
+        __u8 track_mode                        : 4;
+       __u8 rt                         : 1;
+       __u8 blank                      : 1;
+       __u8 packet                     : 1;
+       __u8 fp                         : 1;
+       __u8 data_mode                  : 4;
+       __u8 reserved3                  : 6;
+       __u8 lra_v                      : 1;
+       __u8 nwa_v                      : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+        __u8 track_mode                        : 4;
+        __u8 copy                      : 1;
+        __u8 damage                    : 1;
+       __u8 reserved2                  : 2;
+       __u8 data_mode                  : 4;
+       __u8 fp                         : 1;
+       __u8 packet                     : 1;
+       __u8 blank                      : 1;
+       __u8 rt                         : 1;
+       __u8 nwa_v                      : 1;
+       __u8 lra_v                      : 1;
+       __u8 reserved3                  : 6;
+#endif
+       __u32 track_start;
+       __u32 next_writable;
+       __u32 free_blocks;
+       __u32 fixed_packet_size;
+       __u32 track_size;
+       __u32 last_rec_address;
+} track_information;
+
+extern int cdrom_get_disc_info(kdev_t dev, disc_information *di);
+extern int cdrom_get_track_info(kdev_t dev, __u16 track, __u8 type,
+                               track_information *ti);
+
+/* The SCSI spec says there could be 256 slots. */
+#define CDROM_MAX_SLOTS        256
+
+struct cdrom_mechstat_header {
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 fault         : 1;
+       __u8 changer_state : 2;
+       __u8 curslot       : 5;
+       __u8 mech_state    : 3;
+       __u8 door_open     : 1;
+       __u8 reserved1     : 4;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+       __u8 curslot       : 5;
+       __u8 changer_state : 2;
+       __u8 fault         : 1;
+       __u8 reserved1     : 4;
+       __u8 door_open     : 1;
+       __u8 mech_state    : 3;
+#endif
+       __u8     curlba[3];
+       __u8     nslots;
+       __u16 slot_tablelen;
+};
+
+struct cdrom_slot {
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 disc_present : 1;
+       __u8 reserved1    : 6;
+       __u8 change       : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+       __u8 change       : 1;
+       __u8 reserved1    : 6;
+       __u8 disc_present : 1;
+#endif
+       __u8 reserved2[3];
+};
+
+struct cdrom_changer_info {
+       struct cdrom_mechstat_header hdr;
+       struct cdrom_slot slots[CDROM_MAX_SLOTS];
+};
+
+typedef enum {
+       mechtype_caddy = 0,
+       mechtype_tray  = 1,
+       mechtype_popup = 2,
+       mechtype_individual_changer = 4,
+       mechtype_cartridge_changer  = 5
+} mechtype_t;
+
+struct mode_page_header {
+       __u16 mode_data_length;
+       __u8 medium_type;
+       __u8 reserved1;
+       __u8 reserved2;
+       __u8 reserved3;
+       __u16 desc_length;
+};
+
+typedef struct {
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 ps                 : 1;
+       __u8 reserved1          : 1;
+       __u8 page_code          : 6;
+        __u8 page_length;
+       __u8 reserved2          : 1;
+       __u8 bufe               : 1;
+       __u8 ls_v               : 1;
+       __u8 test_write         : 1;
+        __u8 write_type                : 4;
+       __u8 multi_session      : 2; /* or border, DVD */
+       __u8 fp                 : 1;
+       __u8 copy               : 1;
+       __u8 track_mode         : 4;
+       __u8 reserved3          : 4;
+       __u8 data_block_type    : 4;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+       __u8 page_code          : 6;
+       __u8 reserved1          : 1;
+       __u8 ps                 : 1;
+        __u8 page_length;
+        __u8 write_type                : 4;
+       __u8 test_write         : 1;
+       __u8 ls_v               : 1;
+       __u8 bufe               : 1;
+       __u8 reserved2          : 1;
+       __u8 track_mode         : 4;
+       __u8 copy               : 1;
+       __u8 fp                 : 1;
+       __u8 multi_session      : 2; /* or border, DVD */
+       __u8 data_block_type    : 4;
+       __u8 reserved3          : 4;
+#endif
+       __u8 link_size;
+       __u8 reserved4;
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 reserved5          : 2;
+       __u8 app_code           : 6;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+       __u8 app_code           : 6;
+       __u8 reserved5          : 2;
+#endif
+       __u8 session_format;
+       __u8 reserved6;
+       __u32 packet_size;
+       __u16 audio_pause;
+       __u8 mcn[16];
+       __u8 isrc[16];
+       __u8 subhdr0;
+       __u8 subhdr1;
+       __u8 subhdr2;
+       __u8 subhdr3;
+} __attribute__((packed)) write_param_page;
+
+struct modesel_head
+{
+       __u8    reserved1;
+       __u8    medium;
+       __u8    reserved2;
+       __u8    block_desc_length;
+       __u8    density;
+       __u8    number_of_blocks_hi;
+       __u8    number_of_blocks_med;
+       __u8    number_of_blocks_lo;
+       __u8    reserved3;
+       __u8    block_length_hi;
+       __u8    block_length_med;
+       __u8    block_length_lo;
+};
+
+typedef struct {
+       __u16 report_key_length;
+       __u8 reserved1;
+       __u8 reserved2;
+#if defined(__BIG_ENDIAN_BITFIELD)
+       __u8 type_code                  : 2;
+       __u8 vra                        : 3;
+       __u8 ucca                       : 3;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+       __u8 ucca                       : 3;
+       __u8 vra                        : 3;
+       __u8 type_code                  : 2;
+#endif
+       __u8 region_mask;
+       __u8 rpc_scheme;
+       __u8 reserved3;
+} rpc_state_t;
+
+#endif  /* End of kernel only stuff */ 
+
+#endif  /* _LINUX_CDROM_H */
diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h
new file mode 100644 (file)
index 0000000..05205c7
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef __LINUX_COMPILER_H
+#define __LINUX_COMPILER_H
+
+/* Somewhere in the middle of the GCC 2.96 development cycle, we implemented
+   a mechanism by which the user can annotate likely branch directions and
+   expect the blocks to be reordered appropriately.  Define __builtin_expect
+   to nothing for earlier compilers.  */
+
+#if __GNUC__ == 2 && __GNUC_MINOR__ < 96
+#define __builtin_expect(x, expected_value) (x)
+#endif
+
+#define likely(x)      __builtin_expect((x),1)
+#define unlikely(x)    __builtin_expect((x),0)
+
+#endif /* __LINUX_COMPILER_H */
diff --git a/xen/include/xen/config.h b/xen/include/xen/config.h
new file mode 100644 (file)
index 0000000..a61e347
--- /dev/null
@@ -0,0 +1,45 @@
+/******************************************************************************
+ * config.h
+ * 
+ * A Linux-style configuration list.
+ */
+
+#ifndef __XENO_CONFIG_H__
+#define __XENO_CONFIG_H__
+
+#include <asm/config.h>
+
+/* syslog levels ==> nothing! */
+#define KERN_NOTICE  ""
+#define KERN_WARNING ""
+#define KERN_DEBUG   ""
+#define KERN_INFO    ""
+#define KERN_ERR     ""
+#define KERN_CRIT    ""
+#define KERN_EMERG   ""
+#define KERN_ALERT   ""
+
+#define offsetof(_p,_f) ((unsigned long)&(((_p *)0)->_f))
+#define struct_cpy(_x,_y) (memcpy((_x),(_y),sizeof(*(_x))))
+
+#define dev_probe_lock() ((void)0)
+#define dev_probe_unlock() ((void)0)
+
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+
+#define capable(_c) 0
+
+#ifndef NDEBUG
+#define DPRINTK(_f, _a...) printk("(file=%s, line=%d) " _f, \
+                           __FILE__ , __LINE__ , ## _a )
+#else
+#define DPRINTK(_f, _a...) ((void)0)
+#endif
+
+#ifndef __ASSEMBLY__
+#include <xen/compiler.h>
+extern unsigned int opt_ser_baud;
+#define SERIAL_ENABLED (opt_ser_baud != 0)
+#endif
+
+#endif /* __XENO_CONFIG_H__ */
diff --git a/xen/include/xen/console.h b/xen/include/xen/console.h
new file mode 100644 (file)
index 0000000..a89dde7
--- /dev/null
@@ -0,0 +1,31 @@
+/******************************************************************************
+ * xen/console.h
+ * 
+ * Xen header file concerning console access.
+ * 
+ * Copyright (c) 2003 James Scott, Intel Research Cambridge
+ */
+
+#ifndef __CONSOLE_H__
+#define __CONSOLE_H__
+
+#include <xen/spinlock.h>
+
+extern spinlock_t console_lock;
+
+/*
+ * Ownership of console --- currently hardwired to dom0. This is used to see 
+ * who gets the PS/2 keyboard/mouse events
+ */
+#define CONSOLE_ISOWNER(p) (p->domain == 0) 
+#define CONSOLE_OWNER      (find_domain_by_id(0))
+
+void set_printk_prefix(const char *prefix);
+
+#define CONSOLE_RING_CLEAR 1
+long read_console_ring(unsigned long, unsigned int, unsigned int);
+
+void init_console(void);
+void console_endboot(int disable_vga);
+
+#endif
diff --git a/xen/include/xen/crc32.h b/xen/include/xen/crc32.h
new file mode 100644 (file)
index 0000000..cf7c82d
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * crc32.h for early Linux 2.4.19pre kernel inclusion
+ * This defines ether_crc_le() and ether_crc() as inline functions
+ * This is slated to change to using the library crc32 functions
+ * as kernel 2.5.2 included at some future date.
+ */
+#ifndef _LINUX_CRC32_H
+#define _LINUX_CRC32_H
+
+#include <xen/types.h>
+
+/* The little-endian AUTODIN II ethernet CRC calculation.
+   N.B. Do not use for bulk data, use a table-based routine instead.
+   This is common code and should be moved to net/core/crc.c */
+static unsigned const ethernet_polynomial_le = 0xedb88320U;
+static inline unsigned ether_crc_le(int length, unsigned char *data)
+{
+       unsigned int crc = 0xffffffff;  /* Initial value. */
+       while(--length >= 0) {
+               unsigned char current_octet = *data++;
+               int bit;
+               for (bit = 8; --bit >= 0; current_octet >>= 1) {
+                       if ((crc ^ current_octet) & 1) {
+                               crc >>= 1;
+                               crc ^= ethernet_polynomial_le;
+                       } else
+                               crc >>= 1;
+               }
+       }
+       return crc;
+}
+
+static unsigned const ethernet_polynomial = 0x04c11db7U;
+static inline u32 ether_crc(int length, unsigned char *data)
+{
+       int crc = -1;
+       while (--length >= 0) {
+               unsigned char current_octet = *data++;
+               int bit;
+               for (bit = 0; bit < 8; bit++, current_octet >>= 1) {
+                       crc = (crc << 1) ^
+                               ((crc < 0) ^ (current_octet & 1) ?
+                                ethernet_polynomial : 0);
+               }
+       }
+       return crc;
+}
+
+#endif /* _LINUX_CRC32_H */
diff --git a/xen/include/xen/ctype.h b/xen/include/xen/ctype.h
new file mode 100644 (file)
index 0000000..afa3639
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef _LINUX_CTYPE_H
+#define _LINUX_CTYPE_H
+
+/*
+ * NOTE! This ctype does not handle EOF like the standard C
+ * library is required to.
+ */
+
+#define _U     0x01    /* upper */
+#define _L     0x02    /* lower */
+#define _D     0x04    /* digit */
+#define _C     0x08    /* cntrl */
+#define _P     0x10    /* punct */
+#define _S     0x20    /* white space (space/lf/tab) */
+#define _X     0x40    /* hex digit */
+#define _SP    0x80    /* hard space (0x20) */
+
+extern unsigned char _ctype[];
+
+#define __ismask(x) (_ctype[(int)(unsigned char)(x)])
+
+#define isalnum(c)     ((__ismask(c)&(_U|_L|_D)) != 0)
+#define isalpha(c)     ((__ismask(c)&(_U|_L)) != 0)
+#define iscntrl(c)     ((__ismask(c)&(_C)) != 0)
+#define isdigit(c)     ((__ismask(c)&(_D)) != 0)
+#define isgraph(c)     ((__ismask(c)&(_P|_U|_L|_D)) != 0)
+#define islower(c)     ((__ismask(c)&(_L)) != 0)
+#define isprint(c)     ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
+#define ispunct(c)     ((__ismask(c)&(_P)) != 0)
+#define isspace(c)     ((__ismask(c)&(_S)) != 0)
+#define isupper(c)     ((__ismask(c)&(_U)) != 0)
+#define isxdigit(c)    ((__ismask(c)&(_D|_X)) != 0)
+
+#define isascii(c) (((unsigned char)(c))<=0x7f)
+#define toascii(c) (((unsigned char)(c))&0x7f)
+
+static inline unsigned char __tolower(unsigned char c)
+{
+       if (isupper(c))
+               c -= 'A'-'a';
+       return c;
+}
+
+static inline unsigned char __toupper(unsigned char c)
+{
+       if (islower(c))
+               c -= 'a'-'A';
+       return c;
+}
+
+#define tolower(c) __tolower(c)
+#define toupper(c) __toupper(c)
+
+#endif
diff --git a/xen/include/xen/delay.h b/xen/include/xen/delay.h
new file mode 100644 (file)
index 0000000..9d70ef0
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef _LINUX_DELAY_H
+#define _LINUX_DELAY_H
+
+/* Copyright (C) 1993 Linus Torvalds */
+
+#include <asm/delay.h>
+#define mdelay(n) (\
+       {unsigned long msec=(n); while (msec--) udelay(1000);})
+
+#endif /* defined(_LINUX_DELAY_H) */
diff --git a/xen/include/xen/elevator.h b/xen/include/xen/elevator.h
new file mode 100644 (file)
index 0000000..1a8bb5c
--- /dev/null
@@ -0,0 +1,104 @@
+#ifndef _LINUX_ELEVATOR_H
+#define _LINUX_ELEVATOR_H
+
+typedef void (elevator_fn) (struct request *, elevator_t *,
+                           struct list_head *,
+                           struct list_head *, int);
+
+typedef int (elevator_merge_fn) (request_queue_t *, struct request **, struct list_head *,
+                                struct buffer_head *, int, int);
+
+typedef void (elevator_merge_cleanup_fn) (request_queue_t *, struct request *, int);
+
+typedef void (elevator_merge_req_fn) (struct request *, struct request *);
+
+struct elevator_s
+{
+       int read_latency;
+       int write_latency;
+
+       elevator_merge_fn *elevator_merge_fn;
+       elevator_merge_cleanup_fn *elevator_merge_cleanup_fn;
+       elevator_merge_req_fn *elevator_merge_req_fn;
+
+       unsigned int queue_ID;
+};
+
+int elevator_noop_merge(request_queue_t *, struct request **, struct list_head *, struct buffer_head *, int, int);
+void elevator_noop_merge_cleanup(request_queue_t *, struct request *, int);
+void elevator_noop_merge_req(struct request *, struct request *);
+
+int elevator_linus_merge(request_queue_t *, struct request **, struct list_head *, struct buffer_head *, int, int);
+void elevator_linus_merge_cleanup(request_queue_t *, struct request *, int);
+void elevator_linus_merge_req(struct request *, struct request *);
+
+typedef struct blkelv_ioctl_arg_s {
+       int queue_ID;
+       int read_latency;
+       int write_latency;
+       int max_bomb_segments;
+} blkelv_ioctl_arg_t;
+
+#define BLKELVGET   _IOR(0x12,106,sizeof(blkelv_ioctl_arg_t))
+#define BLKELVSET   _IOW(0x12,107,sizeof(blkelv_ioctl_arg_t))
+
+extern int blkelvget_ioctl(elevator_t *, blkelv_ioctl_arg_t *);
+extern int blkelvset_ioctl(elevator_t *, const blkelv_ioctl_arg_t *);
+
+extern void elevator_init(elevator_t *, elevator_t);
+
+/*
+ * Return values from elevator merger
+ */
+#define ELEVATOR_NO_MERGE      0
+#define ELEVATOR_FRONT_MERGE   1
+#define ELEVATOR_BACK_MERGE    2
+
+/*
+ * This is used in the elevator algorithm.  We don't prioritise reads
+ * over writes any more --- although reads are more time-critical than
+ * writes, by treating them equally we increase filesystem throughput.
+ * This turns out to give better overall performance.  -- sct
+ */
+#define IN_ORDER(s1,s2)                                \
+       ((((s1)->rq_dev == (s2)->rq_dev &&      \
+          (s1)->sector < (s2)->sector)) ||     \
+        (s1)->rq_dev < (s2)->rq_dev)
+
+#define BHRQ_IN_ORDER(bh, rq)                  \
+       ((((bh)->b_rdev == (rq)->rq_dev &&      \
+          (bh)->b_rsector < (rq)->sector)) ||  \
+        (bh)->b_rdev < (rq)->rq_dev)
+
+static inline int elevator_request_latency(elevator_t * elevator, int rw)
+{
+       int latency;
+
+       latency = elevator->read_latency;
+       if (rw != READ)
+               latency = elevator->write_latency;
+
+       return latency;
+}
+
+#define ELEVATOR_NOOP                                                  \
+((elevator_t) {                                                                \
+       0,                              /* read_latency */              \
+       0,                              /* write_latency */             \
+                                                                       \
+       elevator_noop_merge,            /* elevator_merge_fn */         \
+       elevator_noop_merge_cleanup,    /* elevator_merge_cleanup_fn */ \
+       elevator_noop_merge_req,        /* elevator_merge_req_fn */     \
+       })
+
+#define ELEVATOR_LINUS                                                 \
+((elevator_t) {                                                                \
+       8192,                           /* read passovers */            \
+       16384,                          /* write passovers */           \
+                                                                       \
+       elevator_linus_merge,           /* elevator_merge_fn */         \
+       elevator_linus_merge_cleanup,   /* elevator_merge_cleanup_fn */ \
+       elevator_linus_merge_req,       /* elevator_merge_req_fn */     \
+       })
+
+#endif
diff --git a/xen/include/xen/errno.h b/xen/include/xen/errno.h
new file mode 100644 (file)
index 0000000..7cf599f
--- /dev/null
@@ -0,0 +1,132 @@
+#ifndef _I386_ERRNO_H
+#define _I386_ERRNO_H
+
+#define        EPERM            1      /* Operation not permitted */
+#define        ENOENT           2      /* No such file or directory */
+#define        ESRCH            3      /* No such process */
+#define        EINTR            4      /* Interrupted system call */
+#define        EIO              5      /* I/O error */
+#define        ENXIO            6      /* No such device or address */
+#define        E2BIG            7      /* Arg list too long */
+#define        ENOEXEC          8      /* Exec format error */
+#define        EBADF            9      /* Bad file number */
+#define        ECHILD          10      /* No child processes */
+#define        EAGAIN          11      /* Try again */
+#define        ENOMEM          12      /* Out of memory */
+#define        EACCES          13      /* Permission denied */
+#define        EFAULT          14      /* Bad address */
+#define        ENOTBLK         15      /* Block device required */
+#define        EBUSY           16      /* Device or resource busy */
+#define        EEXIST          17      /* File exists */
+#define        EXDEV           18      /* Cross-device link */
+#define        ENODEV          19      /* No such device */
+#define        ENOTDIR         20      /* Not a directory */
+#define        EISDIR          21      /* Is a directory */
+#define        EINVAL          22      /* Invalid argument */
+#define        ENFILE          23      /* File table overflow */
+#define        EMFILE          24      /* Too many open files */
+#define        ENOTTY          25      /* Not a typewriter */
+#define        ETXTBSY         26      /* Text file busy */
+#define        EFBIG           27      /* File too large */
+#define        ENOSPC          28      /* No space left on device */
+#define        ESPIPE          29      /* Illegal seek */
+#define        EROFS           30      /* Read-only file system */
+#define        EMLINK          31      /* Too many links */
+#define        EPIPE           32      /* Broken pipe */
+#define        EDOM            33      /* Math argument out of domain of func */
+#define        ERANGE          34      /* Math result not representable */
+#define        EDEADLK         35      /* Resource deadlock would occur */
+#define        ENAMETOOLONG    36      /* File name too long */
+#define        ENOLCK          37      /* No record locks available */
+#define        ENOSYS          38      /* Function not implemented */
+#define        ENOTEMPTY       39      /* Directory not empty */
+#define        ELOOP           40      /* Too many symbolic links encountered */
+#define        EWOULDBLOCK     EAGAIN  /* Operation would block */
+#define        ENOMSG          42      /* No message of desired type */
+#define        EIDRM           43      /* Identifier removed */
+#define        ECHRNG          44      /* Channel number out of range */
+#define        EL2NSYNC        45      /* Level 2 not synchronized */
+#define        EL3HLT          46      /* Level 3 halted */
+#define        EL3RST          47      /* Level 3 reset */
+#define        ELNRNG          48      /* Link number out of range */
+#define        EUNATCH         49      /* Protocol driver not attached */
+#define        ENOCSI          50      /* No CSI structure available */
+#define        EL2HLT          51      /* Level 2 halted */
+#define        EBADE           52      /* Invalid exchange */
+#define        EBADR           53      /* Invalid request descriptor */
+#define        EXFULL          54      /* Exchange full */
+#define        ENOANO          55      /* No anode */
+#define        EBADRQC         56      /* Invalid request code */
+#define        EBADSLT         57      /* Invalid slot */
+
+#define        EDEADLOCK       EDEADLK
+
+#define        EBFONT          59      /* Bad font file format */
+#define        ENOSTR          60      /* Device not a stream */
+#define        ENODATA         61      /* No data available */
+#define        ETIME           62      /* Timer expired */
+#define        ENOSR           63      /* Out of streams resources */
+#define        ENONET          64      /* Machine is not on the network */
+#define        ENOPKG          65      /* Package not installed */
+#define        EREMOTE         66      /* Object is remote */
+#define        ENOLINK         67      /* Link has been severed */
+#define        EADV            68      /* Advertise error */
+#define        ESRMNT          69      /* Srmount error */
+#define        ECOMM           70      /* Communication error on send */
+#define        EPROTO          71      /* Protocol error */
+#define        EMULTIHOP       72      /* Multihop attempted */
+#define        EDOTDOT         73      /* RFS specific error */
+#define        EBADMSG         74      /* Not a data message */
+#define        EOVERFLOW       75      /* Value too large for defined data type */
+#define        ENOTUNIQ        76      /* Name not unique on network */
+#define        EBADFD          77      /* File descriptor in bad state */
+#define        EREMCHG         78      /* Remote address changed */
+#define        ELIBACC         79      /* Can not access a needed shared library */
+#define        ELIBBAD         80      /* Accessing a corrupted shared library */
+#define        ELIBSCN         81      /* .lib section in a.out corrupted */
+#define        ELIBMAX         82      /* Attempting to link in too many shared libraries */
+#define        ELIBEXEC        83      /* Cannot exec a shared library directly */
+#define        EILSEQ          84      /* Illegal byte sequence */
+#define        ERESTART        85      /* Interrupted system call should be restarted */
+#define        ESTRPIPE        86      /* Streams pipe error */
+#define        EUSERS          87      /* Too many users */
+#define        ENOTSOCK        88      /* Socket operation on non-socket */
+#define        EDESTADDRREQ    89      /* Destination address required */
+#define        EMSGSIZE        90      /* Message too long */
+#define        EPROTOTYPE      91      /* Protocol wrong type for socket */
+#define        ENOPROTOOPT     92      /* Protocol not available */
+#define        EPROTONOSUPPORT 93      /* Protocol not supported */
+#define        ESOCKTNOSUPPORT 94      /* Socket type not supported */
+#define        EOPNOTSUPP      95      /* Operation not supported on transport endpoint */
+#define        EPFNOSUPPORT    96      /* Protocol family not supported */
+#define        EAFNOSUPPORT    97      /* Address family not supported by protocol */
+#define        EADDRINUSE      98      /* Address already in use */
+#define        EADDRNOTAVAIL   99      /* Cannot assign requested address */
+#define        ENETDOWN        100     /* Network is down */
+#define        ENETUNREACH     101     /* Network is unreachable */
+#define        ENETRESET       102     /* Network dropped connection because of reset */
+#define        ECONNABORTED    103     /* Software caused connection abort */
+#define        ECONNRESET      104     /* Connection reset by peer */
+#define        ENOBUFS         105     /* No buffer space available */
+#define        EISCONN         106     /* Transport endpoint is already connected */
+#define        ENOTCONN        107     /* Transport endpoint is not connected */
+#define        ESHUTDOWN       108     /* Cannot send after transport endpoint shutdown */
+#define        ETOOMANYREFS    109     /* Too many references: cannot splice */
+#define        ETIMEDOUT       110     /* Connection timed out */
+#define        ECONNREFUSED    111     /* Connection refused */
+#define        EHOSTDOWN       112     /* Host is down */
+#define        EHOSTUNREACH    113     /* No route to host */
+#define        EALREADY        114     /* Operation already in progress */
+#define        EINPROGRESS     115     /* Operation now in progress */
+#define        ESTALE          116     /* Stale NFS file handle */
+#define        EUCLEAN         117     /* Structure needs cleaning */
+#define        ENOTNAM         118     /* Not a XENIX named type file */
+#define        ENAVAIL         119     /* No XENIX semaphores available */
+#define        EISNAM          120     /* Is a named type file */
+#define        EREMOTEIO       121     /* Remote I/O error */
+#define        EDQUOT          122     /* Quota exceeded */
+
+#define        ENOMEDIUM       123     /* No medium found */
+#define        EMEDIUMTYPE     124     /* Wrong medium type */
+
+#endif
diff --git a/xen/include/xen/etherdevice.h b/xen/include/xen/etherdevice.h
new file mode 100644 (file)
index 0000000..0a9716e
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  NET  is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Definitions for the Ethernet handlers.
+ *
+ * Version:    @(#)eth.h       1.0.4   05/13/93
+ *
+ * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ *             Relocated to include/linux where it belongs by Alan Cox 
+ *                                                     <gw4pts@gw4pts.ampr.org>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ *
+ *     WARNING: This move may well be temporary. This file will get merged with others RSN.
+ *
+ */
+#ifndef _LINUX_ETHERDEVICE_H
+#define _LINUX_ETHERDEVICE_H
+
+#include <xen/if_ether.h>
+#include <asm/domain_page.h>
+
+#ifdef __KERNEL__
+extern int             eth_header(struct sk_buff *skb, struct net_device *dev,
+                                  unsigned short type, void *daddr,
+                                  void *saddr, unsigned len);
+extern int             eth_rebuild_header(struct sk_buff *skb);
+extern unsigned short  eth_type_trans(struct sk_buff *skb, struct net_device *dev);
+extern void            eth_header_cache_update(struct hh_cache *hh, struct net_device *dev,
+                                               unsigned char * haddr);
+extern int             eth_header_cache(struct neighbour *neigh,
+                                        struct hh_cache *hh);
+extern int             eth_header_parse(struct sk_buff *skb,
+                                        unsigned char *haddr);
+extern struct net_device *init_etherdev(struct net_device *dev, int sizeof_priv);
+extern struct net_device *alloc_etherdev(int sizeof_priv);
+
+static inline void eth_copy_and_sum (struct sk_buff *dest, unsigned char *src, int len, int base)
+{
+       char *vdata = map_domain_mem(__pa(dest->data));
+       memcpy(vdata, src, len);
+       unmap_domain_mem(vdata);
+}
+
+/**
+ * is_valid_ether_addr - Determine if the given Ethernet address is valid
+ * @addr: Pointer to a six-byte array containing the Ethernet address
+ *
+ * Check that the Ethernet address (MAC) is not 00:00:00:00:00:00, is not
+ * a multicast address, and is not FF:FF:FF:FF:FF:FF.  The multicast
+ * and FF:FF:... tests are combined into the single test "!(addr[0]&1)".
+ *
+ * Return true if the address is valid.
+ */
+static inline int is_valid_ether_addr( u8 *addr )
+{
+       const char zaddr[6] = {0,};
+
+       return !(addr[0]&1) && memcmp( addr, zaddr, 6);
+}
+
+#endif
+
+#endif /* _LINUX_ETHERDEVICE_H */
diff --git a/xen/include/xen/ethtool.h b/xen/include/xen/ethtool.h
new file mode 100644 (file)
index 0000000..e672ac5
--- /dev/null
@@ -0,0 +1,361 @@
+/*
+ * ethtool.h: Defines for Linux ethtool.
+ *
+ * Copyright (C) 1998 David S. Miller (davem@redhat.com)
+ * Copyright 2001 Jeff Garzik <jgarzik@pobox.com>
+ * Portions Copyright 2001 Sun Microsystems (thockin@sun.com)
+ * Portions Copyright 2002 Intel (eli.kupermann@intel.com,
+ *                                christopher.leech@intel.com,
+ *                                scott.feldman@intel.com)
+ */
+
+#ifndef _LINUX_ETHTOOL_H
+#define _LINUX_ETHTOOL_H
+
+
+/* This should work for both 32 and 64 bit userland. */
+struct ethtool_cmd {
+       u32     cmd;
+       u32     supported;      /* Features this interface supports */
+       u32     advertising;    /* Features this interface advertises */
+       u16     speed;          /* The forced speed, 10Mb, 100Mb, gigabit */
+       u8      duplex;         /* Duplex, half or full */
+       u8      port;           /* Which connector port */
+       u8      phy_address;
+       u8      transceiver;    /* Which tranceiver to use */
+       u8      autoneg;        /* Enable or disable autonegotiation */
+       u32     maxtxpkt;       /* Tx pkts before generating tx int */
+       u32     maxrxpkt;       /* Rx pkts before generating rx int */
+       u32     reserved[4];
+};
+
+#define ETHTOOL_BUSINFO_LEN    32
+/* these strings are set to whatever the driver author decides... */
+struct ethtool_drvinfo {
+       u32     cmd;
+       char    driver[32];     /* driver short name, "tulip", "eepro100" */
+       char    version[32];    /* driver version string */
+       char    fw_version[32]; /* firmware version string, if applicable */
+       char    bus_info[ETHTOOL_BUSINFO_LEN];  /* Bus info for this IF. */
+                               /* For PCI devices, use pci_dev->slot_name. */
+       char    reserved1[32];
+       char    reserved2[16];
+       u32     n_stats;        /* number of u64's from ETHTOOL_GSTATS */
+       u32     testinfo_len;
+       u32     eedump_len;     /* Size of data from ETHTOOL_GEEPROM (bytes) */
+       u32     regdump_len;    /* Size of data from ETHTOOL_GREGS (bytes) */
+};
+
+#define SOPASS_MAX     6
+/* wake-on-lan settings */
+struct ethtool_wolinfo {
+       u32     cmd;
+       u32     supported;
+       u32     wolopts;
+       u8      sopass[SOPASS_MAX]; /* SecureOn(tm) password */
+};
+
+/* for passing single values */
+struct ethtool_value {
+       u32     cmd;
+       u32     data;
+};
+
+/* for passing big chunks of data */
+struct ethtool_regs {
+       u32     cmd;
+       u32     version; /* driver-specific, indicates different chips/revs */
+       u32     len; /* bytes */
+       u8      data[0];
+};
+
+/* for passing EEPROM chunks */
+struct ethtool_eeprom {
+       u32     cmd;
+       u32     magic;
+       u32     offset; /* in bytes */
+       u32     len; /* in bytes */
+       u8      data[0];
+};
+
+/* for configuring coalescing parameters of chip */
+struct ethtool_coalesce {
+       u32     cmd;    /* ETHTOOL_{G,S}COALESCE */
+
+       /* How many usecs to delay an RX interrupt after
+        * a packet arrives.  If 0, only rx_max_coalesced_frames
+        * is used.
+        */
+       u32     rx_coalesce_usecs;
+
+       /* How many packets to delay an RX interrupt after
+        * a packet arrives.  If 0, only rx_coalesce_usecs is
+        * used.  It is illegal to set both usecs and max frames
+        * to zero as this would cause RX interrupts to never be
+        * generated.
+        */
+       u32     rx_max_coalesced_frames;
+
+       /* Same as above two parameters, except that these values
+        * apply while an IRQ is being services by the host.  Not
+        * all cards support this feature and the values are ignored
+        * in that case.
+        */
+       u32     rx_coalesce_usecs_irq;
+       u32     rx_max_coalesced_frames_irq;
+
+       /* How many usecs to delay a TX interrupt after
+        * a packet is sent.  If 0, only tx_max_coalesced_frames
+        * is used.
+        */
+       u32     tx_coalesce_usecs;
+
+       /* How many packets to delay a TX interrupt after
+        * a packet is sent.  If 0, only tx_coalesce_usecs is
+        * used.  It is illegal to set both usecs and max frames
+        * to zero as this would cause TX interrupts to never be
+        * generated.
+        */
+       u32     tx_max_coalesced_frames;
+
+       /* Same as above two parameters, except that these values
+        * apply while an IRQ is being services by the host.  Not
+        * all cards support this feature and the values are ignored
+        * in that case.
+        */
+       u32     tx_coalesce_usecs_irq;
+       u32     tx_max_coalesced_frames_irq;
+
+       /* How many usecs to delay in-memory statistics
+        * block updates.  Some drivers do not have an in-memory
+        * statistic block, and in such cases this value is ignored.
+        * This value must not be zero.
+        */
+       u32     stats_block_coalesce_usecs;
+
+       /* Adaptive RX/TX coalescing is an algorithm implemented by
+        * some drivers to improve latency under low packet rates and
+        * improve throughput under high packet rates.  Some drivers
+        * only implement one of RX or TX adaptive coalescing.  Anything
+        * not implemented by the driver causes these values to be
+        * silently ignored.
+        */
+       u32     use_adaptive_rx_coalesce;
+       u32     use_adaptive_tx_coalesce;
+
+       /* When the packet rate (measured in packets per second)
+        * is below pkt_rate_low, the {rx,tx}_*_low parameters are
+        * used.
+        */
+       u32     pkt_rate_low;
+       u32     rx_coalesce_usecs_low;
+       u32     rx_max_coalesced_frames_low;
+       u32     tx_coalesce_usecs_low;
+       u32     tx_max_coalesced_frames_low;
+
+       /* When the packet rate is below pkt_rate_high but above
+        * pkt_rate_low (both measured in packets per second) the
+        * normal {rx,tx}_* coalescing parameters are used.
+        */
+
+       /* When the packet rate is (measured in packets per second)
+        * is above pkt_rate_high, the {rx,tx}_*_high parameters are
+        * used.
+        */
+       u32     pkt_rate_high;
+       u32     rx_coalesce_usecs_high;
+       u32     rx_max_coalesced_frames_high;
+       u32     tx_coalesce_usecs_high;
+       u32     tx_max_coalesced_frames_high;
+
+       /* How often to do adaptive coalescing packet rate sampling,
+        * measured in seconds.  Must not be zero.
+        */
+       u32     rate_sample_interval;
+};
+
+/* for configuring RX/TX ring parameters */
+struct ethtool_ringparam {
+       u32     cmd;    /* ETHTOOL_{G,S}RINGPARAM */
+
+       /* Read only attributes.  These indicate the maximum number
+        * of pending RX/TX ring entries the driver will allow the
+        * user to set.
+        */
+       u32     rx_max_pending;
+       u32     rx_mini_max_pending;
+       u32     rx_jumbo_max_pending;
+       u32     tx_max_pending;
+
+       /* Values changeable by the user.  The valid values are
+        * in the range 1 to the "*_max_pending" counterpart above.
+        */
+       u32     rx_pending;
+       u32     rx_mini_pending;
+       u32     rx_jumbo_pending;
+       u32     tx_pending;
+};
+
+/* for configuring link flow control parameters */
+struct ethtool_pauseparam {
+       u32     cmd;    /* ETHTOOL_{G,S}PAUSEPARAM */
+
+       /* If the link is being auto-negotiated (via ethtool_cmd.autoneg
+        * being true) the user may set 'autonet' here non-zero to have the
+        * pause parameters be auto-negotiated too.  In such a case, the
+        * {rx,tx}_pause values below determine what capabilities are
+        * advertised.
+        *
+        * If 'autoneg' is zero or the link is not being auto-negotiated,
+        * then {rx,tx}_pause force the driver to use/not-use pause
+        * flow control.
+        */
+       u32     autoneg;
+       u32     rx_pause;
+       u32     tx_pause;
+};
+
+#define ETH_GSTRING_LEN                32
+enum ethtool_stringset {
+       ETH_SS_TEST             = 0,
+       ETH_SS_STATS,
+};
+
+/* for passing string sets for data tagging */
+struct ethtool_gstrings {
+       u32     cmd;            /* ETHTOOL_GSTRINGS */
+       u32     string_set;     /* string set id e.c. ETH_SS_TEST, etc*/
+       u32     len;            /* number of strings in the string set */
+       u8      data[0];
+};
+
+enum ethtool_test_flags {
+       ETH_TEST_FL_OFFLINE     = (1 << 0),     /* online / offline */
+       ETH_TEST_FL_FAILED      = (1 << 1),     /* test passed / failed */
+};
+
+/* for requesting NIC test and getting results*/
+struct ethtool_test {
+       u32     cmd;            /* ETHTOOL_TEST */
+       u32     flags;          /* ETH_TEST_FL_xxx */
+       u32     reserved;
+       u32     len;            /* result length, in number of u64 elements */
+       u64     data[0];
+};
+
+/* for dumping NIC-specific statistics */
+struct ethtool_stats {
+       u32     cmd;            /* ETHTOOL_GSTATS */
+       u32     n_stats;        /* number of u64's being returned */
+       u64     data[0];
+};
+
+/* CMDs currently supported */
+#define ETHTOOL_GSET           0x00000001 /* Get settings. */
+#define ETHTOOL_SSET           0x00000002 /* Set settings, privileged. */
+#define ETHTOOL_GDRVINFO       0x00000003 /* Get driver info. */
+#define ETHTOOL_GREGS          0x00000004 /* Get NIC registers, privileged. */
+#define ETHTOOL_GWOL           0x00000005 /* Get wake-on-lan options. */
+#define ETHTOOL_SWOL           0x00000006 /* Set wake-on-lan options, priv. */
+#define ETHTOOL_GMSGLVL                0x00000007 /* Get driver message level */
+#define ETHTOOL_SMSGLVL                0x00000008 /* Set driver msg level, priv. */
+#define ETHTOOL_NWAY_RST       0x00000009 /* Restart autonegotiation, priv. */
+#define ETHTOOL_GLINK          0x0000000a /* Get link status (ethtool_value) */
+#define ETHTOOL_GEEPROM                0x0000000b /* Get EEPROM data */
+#define ETHTOOL_SEEPROM                0x0000000c /* Set EEPROM data, priv. */
+#define ETHTOOL_GCOALESCE      0x0000000e /* Get coalesce config */
+#define ETHTOOL_SCOALESCE      0x0000000f /* Set coalesce config, priv. */
+#define ETHTOOL_GRINGPARAM     0x00000010 /* Get ring parameters */
+#define ETHTOOL_SRINGPARAM     0x00000011 /* Set ring parameters, priv. */
+#define ETHTOOL_GPAUSEPARAM    0x00000012 /* Get pause parameters */
+#define ETHTOOL_SPAUSEPARAM    0x00000013 /* Set pause parameters, priv. */
+#define ETHTOOL_GRXCSUM                0x00000014 /* Get RX hw csum enable (ethtool_value) */
+#define ETHTOOL_SRXCSUM                0x00000015 /* Set RX hw csum enable (ethtool_value) */
+#define ETHTOOL_GTXCSUM                0x00000016 /* Get TX hw csum enable (ethtool_value) */
+#define ETHTOOL_STXCSUM                0x00000017 /* Set TX hw csum enable (ethtool_value) */
+#define ETHTOOL_GSG            0x00000018 /* Get scatter-gather enable
+                                           * (ethtool_value) */
+#define ETHTOOL_SSG            0x00000019 /* Set scatter-gather enable
+                                           * (ethtool_value), priv. */
+#define ETHTOOL_TEST           0x0000001a /* execute NIC self-test, priv. */
+#define ETHTOOL_GSTRINGS       0x0000001b /* get specified string set */
+#define ETHTOOL_PHYS_ID                0x0000001c /* identify the NIC */
+#define ETHTOOL_GSTATS         0x0000001d /* get NIC-specific statistics */
+
+/* compatibility with older code */
+#define SPARC_ETH_GSET         ETHTOOL_GSET
+#define SPARC_ETH_SSET         ETHTOOL_SSET
+
+/* Indicates what features are supported by the interface. */
+#define SUPPORTED_10baseT_Half         (1 << 0)
+#define SUPPORTED_10baseT_Full         (1 << 1)
+#define SUPPORTED_100baseT_Half                (1 << 2)
+#define SUPPORTED_100baseT_Full                (1 << 3)
+#define SUPPORTED_1000baseT_Half       (1 << 4)
+#define SUPPORTED_1000baseT_Full       (1 << 5)
+#define SUPPORTED_Autoneg              (1 << 6)
+#define SUPPORTED_TP                   (1 << 7)
+#define SUPPORTED_AUI                  (1 << 8)
+#define SUPPORTED_MII                  (1 << 9)
+#define SUPPORTED_FIBRE                        (1 << 10)
+#define SUPPORTED_BNC                  (1 << 11)
+
+/* Indicates what features are advertised by the interface. */
+#define ADVERTISED_10baseT_Half                (1 << 0)
+#define ADVERTISED_10baseT_Full                (1 << 1)
+#define ADVERTISED_100baseT_Half       (1 << 2)
+#define ADVERTISED_100baseT_Full       (1 << 3)
+#define ADVERTISED_1000baseT_Half      (1 << 4)
+#define ADVERTISED_1000baseT_Full      (1 << 5)
+#define ADVERTISED_Autoneg             (1 << 6)
+#define ADVERTISED_TP                  (1 << 7)
+#define ADVERTISED_AUI                 (1 << 8)
+#define ADVERTISED_MII                 (1 << 9)
+#define ADVERTISED_FIBRE               (1 << 10)
+#define ADVERTISED_BNC                 (1 << 11)
+
+/* The following are all involved in forcing a particular link
+ * mode for the device for setting things.  When getting the
+ * devices settings, these indicate the current mode and whether
+ * it was foced up into this mode or autonegotiated.
+ */
+
+/* The forced speed, 10Mb, 100Mb, gigabit. */
+#define SPEED_10               10
+#define SPEED_100              100
+#define SPEED_1000             1000
+
+/* Duplex, half or full. */
+#define DUPLEX_HALF            0x00
+#define DUPLEX_FULL            0x01
+
+/* Which connector port. */
+#define PORT_TP                        0x00
+#define PORT_AUI               0x01
+#define PORT_MII               0x02
+#define PORT_FIBRE             0x03
+#define PORT_BNC               0x04
+
+/* Which tranceiver to use. */
+#define XCVR_INTERNAL          0x00
+#define XCVR_EXTERNAL          0x01
+#define XCVR_DUMMY1            0x02
+#define XCVR_DUMMY2            0x03
+#define XCVR_DUMMY3            0x04
+
+/* Enable or disable autonegotiation.  If this is set to enable,
+ * the forced link modes above are completely ignored.
+ */
+#define AUTONEG_DISABLE                0x00
+#define AUTONEG_ENABLE         0x01
+
+/* Wake-On-Lan options. */
+#define WAKE_PHY               (1 << 0)
+#define WAKE_UCAST             (1 << 1)
+#define WAKE_MCAST             (1 << 2)
+#define WAKE_BCAST             (1 << 3)
+#define WAKE_ARP               (1 << 4)
+#define WAKE_MAGIC             (1 << 5)
+#define WAKE_MAGICSECURE       (1 << 6) /* only meaningful if WAKE_MAGIC */
+
+#endif /* _LINUX_ETHTOOL_H */
diff --git a/xen/include/xen/event.h b/xen/include/xen/event.h
new file mode 100644 (file)
index 0000000..fd57576
--- /dev/null
@@ -0,0 +1,115 @@
+/******************************************************************************
+ * event.h
+ * 
+ * A nice interface for passing asynchronous events to guest OSes.
+ * 
+ * Copyright (c) 2002, K A Fraser
+ */
+
+#include <xen/config.h>
+#include <xen/sched.h>
+#include <asm/bitops.h>
+
+#ifdef CONFIG_SMP
+
+/*
+ * mark_guest_event:
+ *  @p:        Domain to which event should be passed
+ *  @event:    Event number
+ *  RETURNS:   "Bitmask" of CPU on which process is currently running
+ * 
+ * Idea is that caller may loop on task_list, looking for domains
+ * to pass events to (using this function). The caller accumulates the
+ * bits returned by this function (ORing them together) then calls
+ * event_notify().
+ * 
+ * Guest_events are per-domain events passed directly to the guest OS
+ * in ring 1. 
+ */
+static inline unsigned long mark_guest_event(struct task_struct *p, int event)
+{
+    unsigned long flags, cpu_mask;
+
+    if ( test_and_set_bit(event, &p->shared_info->events) )
+        return 0;
+
+    spin_lock_irqsave(&schedule_lock[p->processor], flags);
+    if ( p->state == TASK_INTERRUPTIBLE )
+        __wake_up(p);
+    cpu_mask = __reschedule(p);
+    if ( p->has_cpu )
+        cpu_mask |= 1 << p->processor;
+    spin_unlock_irqrestore(&schedule_lock[p->processor], flags);
+
+    return cpu_mask;
+}
+
+/* As above, but hyp_events are handled within the hypervisor. */
+static inline unsigned long mark_hyp_event(struct task_struct *p, int event)
+{
+    unsigned long flags, cpu_mask;
+
+    if ( test_and_set_bit(event, &p->hyp_events) )
+        return 0;
+
+    spin_lock_irqsave(&schedule_lock[p->processor], flags);
+    if ( p->state == TASK_INTERRUPTIBLE )
+        __wake_up(p);
+    cpu_mask = __reschedule(p);
+    if ( p->has_cpu )
+        cpu_mask |= 1 << p->processor;
+    spin_unlock_irqrestore(&schedule_lock[p->processor], flags);
+
+    return cpu_mask;
+}
+
+/* Notify the given set of CPUs that guest events may be outstanding. */
+static inline void guest_event_notify(unsigned long cpu_mask)
+{
+    cpu_mask &= ~(1 << smp_processor_id());
+    if ( cpu_mask != 0 ) smp_send_event_check_mask(cpu_mask);
+}
+
+#else
+
+static inline unsigned long mark_guest_event(struct task_struct *p, int event)
+{
+    if ( !test_and_set_bit(event, &p->shared_info->events) )
+    {
+        if ( p->state == TASK_INTERRUPTIBLE ) wake_up(p);
+        reschedule(p);
+    }
+    return 0;
+}
+
+static inline unsigned long mark_hyp_event(struct task_struct *p, int event)
+{
+    if ( !test_and_set_bit(event, &p->hyp_events) )
+    {
+        if ( p->state == TASK_INTERRUPTIBLE ) wake_up(p);
+        reschedule(p);
+    }
+    return 0;
+}
+
+#define guest_event_notify(_mask) ((void)0)
+
+#endif
+
+/* Notify hypervisor events in thesame way as for guest OS events. */
+#define hyp_event_notify(_mask) guest_event_notify(_mask)
+
+/* Clear a guest-OS event from a per-domain mask. */
+static inline void clear_guest_event(struct task_struct *p, int event)
+{
+    clear_bit(event, &p->shared_info->events);
+}
+
+/* Clear a hypervisor event from a per-domain mask. */
+static inline void clear_hyp_event(struct task_struct *p, int event)
+{
+    clear_bit(event, &p->hyp_events);
+}
+
+/* Called on return from (architecture-dependent) entry.S. */
+void do_hyp_events(void);
diff --git a/xen/include/xen/genhd.h b/xen/include/xen/genhd.h
new file mode 100644 (file)
index 0000000..40c0667
--- /dev/null
@@ -0,0 +1,313 @@
+#ifndef _LINUX_GENHD_H
+#define _LINUX_GENHD_H
+
+/*
+ *     genhd.h Copyright (C) 1992 Drew Eckhardt
+ *     Generic hard disk header file by  
+ *             Drew Eckhardt
+ *
+ *             <drew@colorado.edu>
+ */
+
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/major.h>
+
+enum {
+/* These three have identical behaviour; use the second one if DOS fdisk gets
+   confused about extended/logical partitions starting past cylinder 1023. */
+       DOS_EXTENDED_PARTITION = 5,
+       LINUX_EXTENDED_PARTITION = 0x85,
+       WIN98_EXTENDED_PARTITION = 0x0f,
+
+       LINUX_SWAP_PARTITION = 0x82,
+       LINUX_RAID_PARTITION = 0xfd,    /* autodetect RAID partition */
+
+       SOLARIS_X86_PARTITION = LINUX_SWAP_PARTITION,
+
+       DM6_PARTITION = 0x54,   /* has DDO: use xlated geom & offset */
+       EZD_PARTITION = 0x55,   /* EZ-DRIVE */
+       DM6_AUX1PARTITION = 0x51,       /* no DDO:  use xlated geom */
+       DM6_AUX3PARTITION = 0x53,       /* no DDO:  use xlated geom */
+
+       FREEBSD_PARTITION = 0xa5,    /* FreeBSD Partition ID */
+       OPENBSD_PARTITION = 0xa6,    /* OpenBSD Partition ID */
+       NETBSD_PARTITION = 0xa9,   /* NetBSD Partition ID */
+       BSDI_PARTITION = 0xb7,    /* BSDI Partition ID */
+/* Ours is not to wonder why.. */
+       BSD_PARTITION = FREEBSD_PARTITION,
+       MINIX_PARTITION = 0x81,  /* Minix Partition ID */
+       PLAN9_PARTITION = 0x39,  /* Plan 9 Partition ID */
+       UNIXWARE_PARTITION = 0x63,              /* Partition ID, same as */
+                                               /* GNU_HURD and SCO Unix */
+};
+
+struct partition {
+       unsigned char boot_ind;         /* 0x80 - active */
+       unsigned char head;             /* starting head */
+       unsigned char sector;           /* starting sector */
+       unsigned char cyl;              /* starting cylinder */
+       unsigned char sys_ind;          /* What partition type */
+       unsigned char end_head;         /* end head */
+       unsigned char end_sector;       /* end sector */
+       unsigned char end_cyl;          /* end cylinder */
+       unsigned int start_sect;        /* starting sector counting from 0 */
+       unsigned int nr_sects;          /* nr of sectors in partition */
+} __attribute__((packed));
+
+#ifdef __KERNEL__
+/*#  include <xen/devfs_fs_kernel.h>*/
+
+struct hd_struct {
+       unsigned long start_sect;
+       unsigned long nr_sects;
+    /*devfs_handle_t de;*/              /* primary (master) devfs entry  */
+       int number;                     /* stupid old code wastes space  */
+
+       /* Performance stats: */
+       unsigned int ios_in_flight;
+       unsigned int io_ticks;
+       unsigned int last_idle_time;
+       unsigned int last_queue_change;
+       unsigned int aveq;
+       
+       unsigned int rd_ios;
+       unsigned int rd_merges;
+       unsigned int rd_ticks;
+       unsigned int rd_sectors;
+       unsigned int wr_ios;
+       unsigned int wr_merges;
+       unsigned int wr_ticks;
+       unsigned int wr_sectors;        
+};
+
+#define GENHD_FL_REMOVABLE  1
+
+struct gendisk {
+       int major;                      /* major number of driver */
+       const char *major_name;         /* name of major driver */
+       int minor_shift;                /* number of times minor is shifted to
+                                          get real minor */
+       int max_p;                      /* maximum partitions per device */
+
+       struct hd_struct *part;         /* [indexed by minor] */
+       int *sizes;                     /* [idem], device size in blocks */
+       int nr_real;                    /* number of real devices */
+
+       void *real_devices;             /* internal use */
+       struct gendisk *next;
+       struct block_device_operations *fops;
+
+    /*devfs_handle_t *de_arr;*/         /* one per physical disc */
+       char *flags;                    /* one per physical disc */
+};
+
+/* drivers/block/genhd.c */
+extern struct gendisk *gendisk_head;
+
+extern void add_gendisk(struct gendisk *gp);
+extern void del_gendisk(struct gendisk *gp);
+extern struct gendisk *get_gendisk(kdev_t dev);
+extern int walk_gendisk(int (*walk)(struct gendisk *, void *), void *);
+
+#endif  /*  __KERNEL__  */
+
+#ifdef CONFIG_SOLARIS_X86_PARTITION
+
+#define SOLARIS_X86_NUMSLICE   8
+#define SOLARIS_X86_VTOC_SANE  (0x600DDEEEUL)
+
+struct solaris_x86_slice {
+       ushort  s_tag;                  /* ID tag of partition */
+       ushort  s_flag;                 /* permission flags */
+       unsigned int s_start;           /* start sector no of partition */
+       unsigned int s_size;            /* # of blocks in partition */
+};
+
+struct solaris_x86_vtoc {
+       unsigned int v_bootinfo[3];     /* info needed by mboot (unsupported) */
+       unsigned int v_sanity;          /* to verify vtoc sanity */
+       unsigned int v_version;         /* layout version */
+       char    v_volume[8];            /* volume name */
+       ushort  v_sectorsz;             /* sector size in bytes */
+       ushort  v_nparts;               /* number of partitions */
+       unsigned int v_reserved[10];    /* free space */
+       struct solaris_x86_slice
+               v_slice[SOLARIS_X86_NUMSLICE]; /* slice headers */
+       unsigned int timestamp[SOLARIS_X86_NUMSLICE]; /* timestamp (unsupported) */
+       char    v_asciilabel[128];      /* for compatibility */
+};
+
+#endif /* CONFIG_SOLARIS_X86_PARTITION */
+
+#ifdef CONFIG_BSD_DISKLABEL
+/*
+ * BSD disklabel support by Yossi Gottlieb <yogo@math.tau.ac.il>
+ * updated by Marc Espie <Marc.Espie@openbsd.org>
+ */
+
+/* check against BSD src/sys/sys/disklabel.h for consistency */
+
+#define BSD_DISKMAGIC  (0x82564557UL)  /* The disk magic number */
+#define BSD_MAXPARTITIONS      8
+#define OPENBSD_MAXPARTITIONS  16
+#define BSD_FS_UNUSED          0       /* disklabel unused partition entry ID */
+struct bsd_disklabel {
+       __u32   d_magic;                /* the magic number */
+       __s16   d_type;                 /* drive type */
+       __s16   d_subtype;              /* controller/d_type specific */
+       char    d_typename[16];         /* type name, e.g. "eagle" */
+       char    d_packname[16];                 /* pack identifier */ 
+       __u32   d_secsize;              /* # of bytes per sector */
+       __u32   d_nsectors;             /* # of data sectors per track */
+       __u32   d_ntracks;              /* # of tracks per cylinder */
+       __u32   d_ncylinders;           /* # of data cylinders per unit */
+       __u32   d_secpercyl;            /* # of data sectors per cylinder */
+       __u32   d_secperunit;           /* # of data sectors per unit */
+       __u16   d_sparespertrack;       /* # of spare sectors per track */
+       __u16   d_sparespercyl;         /* # of spare sectors per cylinder */
+       __u32   d_acylinders;           /* # of alt. cylinders per unit */
+       __u16   d_rpm;                  /* rotational speed */
+       __u16   d_interleave;           /* hardware sector interleave */
+       __u16   d_trackskew;            /* sector 0 skew, per track */
+       __u16   d_cylskew;              /* sector 0 skew, per cylinder */
+       __u32   d_headswitch;           /* head switch time, usec */
+       __u32   d_trkseek;              /* track-to-track seek, usec */
+       __u32   d_flags;                /* generic flags */
+#define NDDATA 5
+       __u32   d_drivedata[NDDATA];    /* drive-type specific information */
+#define NSPARE 5
+       __u32   d_spare[NSPARE];        /* reserved for future use */
+       __u32   d_magic2;               /* the magic number (again) */
+       __u16   d_checksum;             /* xor of data incl. partitions */
+
+                       /* filesystem and partition information: */
+       __u16   d_npartitions;          /* number of partitions in following */
+       __u32   d_bbsize;               /* size of boot area at sn0, bytes */
+       __u32   d_sbsize;               /* max size of fs superblock, bytes */
+       struct  bsd_partition {         /* the partition table */
+               __u32   p_size;         /* number of sectors in partition */
+               __u32   p_offset;       /* starting sector */
+               __u32   p_fsize;        /* filesystem basic fragment size */
+               __u8    p_fstype;       /* filesystem type, see below */
+               __u8    p_frag;         /* filesystem fragments per block */
+               __u16   p_cpg;          /* filesystem cylinders per group */
+       } d_partitions[BSD_MAXPARTITIONS];      /* actually may be more */
+};
+
+#endif /* CONFIG_BSD_DISKLABEL */
+
+#ifdef CONFIG_UNIXWARE_DISKLABEL
+/*
+ * Unixware slices support by Andrzej Krzysztofowicz <ankry@mif.pg.gda.pl>
+ * and Krzysztof G. Baranowski <kgb@knm.org.pl>
+ */
+
+#define UNIXWARE_DISKMAGIC     (0xCA5E600DUL)  /* The disk magic number */
+#define UNIXWARE_DISKMAGIC2    (0x600DDEEEUL)  /* The slice table magic nr */
+#define UNIXWARE_NUMSLICE      16
+#define UNIXWARE_FS_UNUSED     0               /* Unused slice entry ID */
+
+struct unixware_slice {
+       __u16   s_label;        /* label */
+       __u16   s_flags;        /* permission flags */
+       __u32   start_sect;     /* starting sector */
+       __u32   nr_sects;       /* number of sectors in slice */
+};
+
+struct unixware_disklabel {
+       __u32   d_type;                 /* drive type */
+       __u32   d_magic;                /* the magic number */
+       __u32   d_version;              /* version number */
+       char    d_serial[12];           /* serial number of the device */
+       __u32   d_ncylinders;           /* # of data cylinders per device */
+       __u32   d_ntracks;              /* # of tracks per cylinder */
+       __u32   d_nsectors;             /* # of data sectors per track */
+       __u32   d_secsize;              /* # of bytes per sector */
+       __u32   d_part_start;           /* # of first sector of this partition */
+       __u32   d_unknown1[12];         /* ? */
+       __u32   d_alt_tbl;              /* byte offset of alternate table */
+       __u32   d_alt_len;              /* byte length of alternate table */
+       __u32   d_phys_cyl;             /* # of physical cylinders per device */
+       __u32   d_phys_trk;             /* # of physical tracks per cylinder */
+       __u32   d_phys_sec;             /* # of physical sectors per track */
+       __u32   d_phys_bytes;           /* # of physical bytes per sector */
+       __u32   d_unknown2;             /* ? */
+       __u32   d_unknown3;             /* ? */
+       __u32   d_pad[8];               /* pad */
+
+       struct unixware_vtoc {
+               __u32   v_magic;                /* the magic number */
+               __u32   v_version;              /* version number */
+               char    v_name[8];              /* volume name */
+               __u16   v_nslices;              /* # of slices */
+               __u16   v_unknown1;             /* ? */
+               __u32   v_reserved[10];         /* reserved */
+               struct unixware_slice
+                       v_slice[UNIXWARE_NUMSLICE];     /* slice headers */
+       } vtoc;
+
+};  /* 408 */
+
+#endif /* CONFIG_UNIXWARE_DISKLABEL */
+
+#ifdef CONFIG_MINIX_SUBPARTITION
+#   define MINIX_NR_SUBPARTITIONS  4
+#endif /* CONFIG_MINIX_SUBPARTITION */
+
+#ifdef __KERNEL__
+
+char *disk_name (struct gendisk *hd, int minor, char *buf);
+
+/*
+ * disk_round_stats is used to round off the IO statistics for a disk
+ * for a complete clock tick.
+ */
+void disk_round_stats(struct hd_struct *hd);
+
+/* 
+ * Account for the completion of an IO request (used by drivers which 
+ * bypass the normal end_request processing) 
+ */
+struct request;
+void req_finished_io(struct request *);
+
+#ifdef DEVFS_MUST_DIE
+extern void devfs_register_partitions (struct gendisk *dev, int minor,
+                                      int unregister);
+#endif
+
+
+
+/*
+ * FIXME: this should use genhd->minor_shift, but that is slow to look up.
+ */
+static inline unsigned int disk_index (kdev_t dev)
+{
+       int major = MAJOR(dev);
+       int minor = MINOR(dev);
+       unsigned int index;
+
+       switch (major) {
+               case DAC960_MAJOR+0:
+                       index = (minor & 0x00f8) >> 3;
+                       break;
+               case SCSI_DISK0_MAJOR:
+                       index = (minor & 0x00f0) >> 4;
+                       break;
+               case IDE0_MAJOR:        /* same as HD_MAJOR */
+               case XT_DISK_MAJOR:
+                       index = (minor & 0x0040) >> 6;
+                       break;
+               case IDE1_MAJOR:
+                       index = ((minor & 0x0040) >> 6) + 2;
+                       break;
+               default:
+                       return 0;
+       }
+       return index;
+}
+
+#endif
+
+#endif
diff --git a/xen/include/xen/hdreg.h b/xen/include/xen/hdreg.h
new file mode 100644 (file)
index 0000000..fa5a6f0
--- /dev/null
@@ -0,0 +1,662 @@
+#ifndef _LINUX_HDREG_H
+#define _LINUX_HDREG_H
+
+/*
+ * This file contains some defines for the AT-hd-controller.
+ * Various sources.  
+ */
+
+#define HD_IRQ 14                      /* the standard disk interrupt */
+
+/* ide.c has its own port definitions in "ide.h" */
+
+/* Hd controller regs. Ref: IBM AT Bios-listing */
+#define HD_DATA                0x1f0           /* _CTL when writing */
+#define HD_ERROR       0x1f1           /* see err-bits */
+#define HD_NSECTOR     0x1f2           /* nr of sectors to read/write */
+#define HD_SECTOR      0x1f3           /* starting sector */
+#define HD_LCYL                0x1f4           /* starting cylinder */
+#define HD_HCYL                0x1f5           /* high byte of starting cyl */
+#define HD_CURRENT     0x1f6           /* 101dhhhh , d=drive, hhhh=head */
+#define HD_STATUS      0x1f7           /* see status-bits */
+#define HD_FEATURE     HD_ERROR        /* same io address, read=error, write=feature */
+#define HD_PRECOMP     HD_FEATURE      /* obsolete use of this port - predates IDE */
+#define HD_COMMAND     HD_STATUS       /* same io address, read=status, write=cmd */
+
+#define HD_CMD         0x3f6           /* used for resets */
+#define HD_ALTSTATUS   0x3f6           /* same as HD_STATUS but doesn't clear irq */
+
+/* remainder is shared between hd.c, ide.c, ide-cd.c, and the hdparm utility */
+
+/* Bits of HD_STATUS */
+#define ERR_STAT               0x01
+#define INDEX_STAT             0x02
+#define ECC_STAT               0x04    /* Corrected error */
+#define DRQ_STAT               0x08
+#define SEEK_STAT              0x10
+#define WRERR_STAT             0x20
+#define READY_STAT             0x40
+#define BUSY_STAT              0x80
+
+/* Bits for HD_ERROR */
+#define MARK_ERR               0x01    /* Bad address mark */
+#define TRK0_ERR               0x02    /* couldn't find track 0 */
+#define ABRT_ERR               0x04    /* Command aborted */
+#define MCR_ERR                        0x08    /* media change request */
+#define ID_ERR                 0x10    /* ID field not found */
+#define MC_ERR                 0x20    /* media changed */
+#define ECC_ERR                        0x40    /* Uncorrectable ECC error */
+#define BBD_ERR                        0x80    /* pre-EIDE meaning:  block marked bad */
+#define ICRC_ERR               0x80    /* new meaning:  CRC error during transfer */
+
+/*
+ * Command Header sizes for IOCTL commands
+ *     HDIO_DRIVE_CMD, HDIO_DRIVE_TASK, and HDIO_DRIVE_TASKFILE
+ */
+
+#if 0
+#include <asm/hdreg.h>
+typedef ide_ioreg_t task_ioreg_t;
+#else
+typedef unsigned char task_ioreg_t;
+#endif
+
+#define HDIO_DRIVE_CMD_HDR_SIZE                4*sizeof(task_ioreg_t)
+#define HDIO_DRIVE_TASK_HDR_SIZE       8*sizeof(task_ioreg_t)
+#define HDIO_DRIVE_HOB_HDR_SIZE                8*sizeof(task_ioreg_t)
+
+#define IDE_DRIVE_TASK_INVALID         -1
+#define IDE_DRIVE_TASK_NO_DATA         0
+#define IDE_DRIVE_TASK_SET_XFER                1
+
+#define IDE_DRIVE_TASK_IN              2
+
+#define IDE_DRIVE_TASK_OUT             3
+#define IDE_DRIVE_TASK_RAW_WRITE       4
+
+struct hd_drive_cmd_hdr {
+       task_ioreg_t command;
+       task_ioreg_t sector_number;
+       task_ioreg_t feature;
+       task_ioreg_t sector_count;
+};
+
+typedef struct hd_drive_task_hdr {
+       task_ioreg_t data;
+       task_ioreg_t feature;
+       task_ioreg_t sector_count;
+       task_ioreg_t sector_number;
+       task_ioreg_t low_cylinder;
+       task_ioreg_t high_cylinder;
+       task_ioreg_t device_head;
+       task_ioreg_t command;
+} task_struct_t;
+
+typedef struct hd_drive_hob_hdr {
+       task_ioreg_t data;
+       task_ioreg_t feature;
+       task_ioreg_t sector_count;
+       task_ioreg_t sector_number;
+       task_ioreg_t low_cylinder;
+       task_ioreg_t high_cylinder;
+       task_ioreg_t device_head;
+       task_ioreg_t control;
+} hob_struct_t;
+
+typedef union ide_reg_valid_s {
+       unsigned all                            : 16;
+       struct {
+               unsigned data                   : 1;
+               unsigned error_feature          : 1;
+               unsigned sector                 : 1;
+               unsigned nsector                : 1;
+               unsigned lcyl                   : 1;
+               unsigned hcyl                   : 1;
+               unsigned select                 : 1;
+               unsigned status_command         : 1;
+
+               unsigned data_hob               : 1;
+               unsigned error_feature_hob      : 1;
+               unsigned sector_hob             : 1;
+               unsigned nsector_hob            : 1;
+               unsigned lcyl_hob               : 1;
+               unsigned hcyl_hob               : 1;
+               unsigned select_hob             : 1;
+               unsigned control_hob            : 1;
+       } b;
+} ide_reg_valid_t;
+
+/*
+ * Define standard taskfile in/out register
+ */
+#define IDE_TASKFILE_STD_OUT_FLAGS     0xFE
+#define IDE_TASKFILE_STD_IN_FLAGS      0xFE
+#define IDE_HOB_STD_OUT_FLAGS          0xC0
+#define IDE_HOB_STD_IN_FLAGS           0xC0
+
+typedef struct ide_task_request_s {
+       task_ioreg_t    io_ports[8];
+       task_ioreg_t    hob_ports[8];
+       ide_reg_valid_t out_flags;
+       ide_reg_valid_t in_flags;
+       int             data_phase;
+       int             req_cmd;
+       unsigned long   out_size;
+       unsigned long   in_size;
+} ide_task_request_t;
+
+typedef struct ide_ioctl_request_s {
+       ide_task_request_t      *task_request;
+       unsigned char           *out_buffer;
+       unsigned char           *in_buffer;
+} ide_ioctl_request_t;
+
+#define TASKFILE_INVALID               0x7fff
+#define TASKFILE_48                    0x8000
+
+#define TASKFILE_NO_DATA               0x0000
+
+#define TASKFILE_IN                    0x0001
+#define TASKFILE_MULTI_IN              0x0002
+
+#define TASKFILE_OUT                   0x0004
+#define TASKFILE_MULTI_OUT             0x0008
+#define TASKFILE_IN_OUT                        0x0010
+
+#define TASKFILE_IN_DMA                        0x0020
+#define TASKFILE_OUT_DMA               0x0040
+#define TASKFILE_IN_DMAQ               0x0080
+#define TASKFILE_OUT_DMAQ              0x0100
+
+#define TASKFILE_P_IN                  0x0200
+#define TASKFILE_P_OUT                 0x0400
+#define TASKFILE_P_IN_DMA              0x0800
+#define TASKFILE_P_OUT_DMA             0x1000
+#define TASKFILE_P_IN_DMAQ             0x2000
+#define TASKFILE_P_OUT_DMAQ            0x4000
+
+/* ATA/ATAPI Commands pre T13 Spec */
+#define WIN_NOP                                0x00
+#define CFA_REQ_EXT_ERROR_CODE         0x03 /* CFA Request Extended Error Code */
+#define WIN_SRST                       0x08 /* ATAPI soft reset command */
+#define WIN_DEVICE_RESET               0x08
+#define WIN_RESTORE                    0x10
+#define WIN_READ                       0x20 /* 28-Bit */
+#define WIN_READ_EXT                   0x24 /* 48-Bit */
+#define WIN_READDMA_EXT                        0x25 /* 48-Bit */
+#define WIN_READDMA_QUEUED_EXT         0x26 /* 48-Bit */
+#define WIN_READ_NATIVE_MAX_EXT                0x27 /* 48-Bit */
+#define WIN_MULTREAD_EXT               0x29 /* 48-Bit */
+#define WIN_WRITE                      0x30 /* 28-Bit */
+#define WIN_WRITE_EXT                  0x34 /* 48-Bit */
+#define WIN_WRITEDMA_EXT               0x35 /* 48-Bit */
+#define WIN_WRITEDMA_QUEUED_EXT                0x36 /* 48-Bit */
+#define WIN_SET_MAX_EXT                        0x37 /* 48-Bit */
+#define CFA_WRITE_SECT_WO_ERASE                0x38 /* CFA Write Sectors without erase */
+#define WIN_MULTWRITE_EXT              0x39 /* 48-Bit */
+#define WIN_WRITE_VERIFY               0x3C /* 28-Bit */
+#define WIN_VERIFY                     0x40 /* 28-Bit - Read Verify Sectors */
+#define WIN_VERIFY_EXT                 0x42 /* 48-Bit */
+#define WIN_FORMAT                     0x50
+#define WIN_INIT                       0x60
+#define WIN_SEEK                       0x70
+#define CFA_TRANSLATE_SECTOR           0x87 /* CFA Translate Sector */
+#define WIN_DIAGNOSE                   0x90
+#define WIN_SPECIFY                    0x91 /* set drive geometry translation */
+#define WIN_DOWNLOAD_MICROCODE         0x92
+#define WIN_STANDBYNOW2                        0x94
+#define WIN_SETIDLE2                   0x97
+#define WIN_CHECKPOWERMODE2            0x98
+#define WIN_SLEEPNOW2                  0x99
+#define WIN_PACKETCMD                  0xA0 /* Send a packet command. */
+#define WIN_PIDENTIFY                  0xA1 /* identify ATAPI device   */
+#define WIN_QUEUED_SERVICE             0xA2
+#define WIN_SMART                      0xB0 /* self-monitoring and reporting */
+#define CFA_ERASE_SECTORS              0xC0
+#define WIN_MULTREAD                   0xC4 /* read sectors using multiple mode*/
+#define WIN_MULTWRITE                  0xC5 /* write sectors using multiple mode */
+#define WIN_SETMULT                    0xC6 /* enable/disable multiple mode */
+#define WIN_READDMA_QUEUED             0xC7 /* read sectors using Queued DMA transfers */
+#define WIN_READDMA                    0xC8 /* read sectors using DMA transfers */
+#define WIN_WRITEDMA                   0xCA /* write sectors using DMA transfers */
+#define WIN_WRITEDMA_QUEUED            0xCC /* write sectors using Queued DMA transfers */
+#define CFA_WRITE_MULTI_WO_ERASE       0xCD /* CFA Write multiple without erase */
+#define WIN_GETMEDIASTATUS             0xDA    
+#define WIN_DOORLOCK                   0xDE /* lock door on removable drives */
+#define WIN_DOORUNLOCK                 0xDF /* unlock door on removable drives */
+#define WIN_STANDBYNOW1                        0xE0
+#define WIN_IDLEIMMEDIATE              0xE1 /* force drive to become "ready" */
+#define WIN_STANDBY                    0xE2 /* Set device in Standby Mode */
+#define WIN_SETIDLE1                   0xE3
+#define WIN_READ_BUFFER                        0xE4 /* force read only 1 sector */
+#define WIN_CHECKPOWERMODE1            0xE5
+#define WIN_SLEEPNOW1                  0xE6
+#define WIN_FLUSH_CACHE                        0xE7
+#define WIN_WRITE_BUFFER               0xE8 /* force write only 1 sector */
+#define WIN_FLUSH_CACHE_EXT            0xEA /* 48-Bit */
+#define WIN_IDENTIFY                   0xEC /* ask drive to identify itself    */
+#define WIN_MEDIAEJECT                 0xED
+#define WIN_IDENTIFY_DMA               0xEE /* same as WIN_IDENTIFY, but DMA */
+#define WIN_SETFEATURES                        0xEF /* set special drive features */
+#define EXABYTE_ENABLE_NEST            0xF0
+#define WIN_SECURITY_SET_PASS          0xF1
+#define WIN_SECURITY_UNLOCK            0xF2
+#define WIN_SECURITY_ERASE_PREPARE     0xF3
+#define WIN_SECURITY_ERASE_UNIT                0xF4
+#define WIN_SECURITY_FREEZE_LOCK       0xF5
+#define WIN_SECURITY_DISABLE           0xF6
+#define WIN_READ_NATIVE_MAX            0xF8 /* return the native maximum address */
+#define WIN_SET_MAX                    0xF9
+#define DISABLE_SEAGATE                        0xFB
+
+/* WIN_SMART sub-commands */
+
+#define SMART_READ_VALUES              0xD0
+#define SMART_READ_THRESHOLDS          0xD1
+#define SMART_AUTOSAVE                 0xD2
+#define SMART_SAVE                     0xD3
+#define SMART_IMMEDIATE_OFFLINE                0xD4
+#define SMART_READ_LOG_SECTOR          0xD5
+#define SMART_WRITE_LOG_SECTOR         0xD6
+#define SMART_WRITE_THRESHOLDS         0xD7
+#define SMART_ENABLE                   0xD8
+#define SMART_DISABLE                  0xD9
+#define SMART_STATUS                   0xDA
+#define SMART_AUTO_OFFLINE             0xDB
+
+/* Password used in TF4 & TF5 executing SMART commands */
+
+#define SMART_LCYL_PASS                        0x4F
+#define SMART_HCYL_PASS                        0xC2
+               
+/* WIN_SETFEATURES sub-commands */
+
+#define SETFEATURES_EN_WCACHE  0x02    /* Enable write cache */
+#define SETFEATURES_XFER       0x03    /* Set transfer mode */
+#      define XFER_UDMA_7      0x47    /* 0100|0111 */
+#      define XFER_UDMA_6      0x46    /* 0100|0110 */
+#      define XFER_UDMA_5      0x45    /* 0100|0101 */
+#      define XFER_UDMA_4      0x44    /* 0100|0100 */
+#      define XFER_UDMA_3      0x43    /* 0100|0011 */
+#      define XFER_UDMA_2      0x42    /* 0100|0010 */
+#      define XFER_UDMA_1      0x41    /* 0100|0001 */
+#      define XFER_UDMA_0      0x40    /* 0100|0000 */
+#      define XFER_MW_DMA_2    0x22    /* 0010|0010 */
+#      define XFER_MW_DMA_1    0x21    /* 0010|0001 */
+#      define XFER_MW_DMA_0    0x20    /* 0010|0000 */
+#      define XFER_SW_DMA_2    0x12    /* 0001|0010 */
+#      define XFER_SW_DMA_1    0x11    /* 0001|0001 */
+#      define XFER_SW_DMA_0    0x10    /* 0001|0000 */
+#      define XFER_PIO_4       0x0C    /* 0000|1100 */
+#      define XFER_PIO_3       0x0B    /* 0000|1011 */
+#      define XFER_PIO_2       0x0A    /* 0000|1010 */
+#      define XFER_PIO_1       0x09    /* 0000|1001 */
+#      define XFER_PIO_0       0x08    /* 0000|1000 */
+#      define XFER_PIO_SLOW    0x00    /* 0000|0000 */
+#define SETFEATURES_DIS_DEFECT 0x04    /* Disable Defect Management */
+#define SETFEATURES_EN_APM     0x05    /* Enable advanced power management */
+#define SETFEATURES_DIS_MSN    0x31    /* Disable Media Status Notification */
+#define SETFEATURES_EN_AAM     0x42    /* Enable Automatic Acoustic Management */
+#define SETFEATURES_DIS_RLA    0x55    /* Disable read look-ahead feature */
+#define SETFEATURES_EN_RI      0x5D    /* Enable release interrupt */
+#define SETFEATURES_EN_SI      0x5E    /* Enable SERVICE interrupt */
+#define SETFEATURES_DIS_RPOD   0x66    /* Disable reverting to power on defaults */
+#define SETFEATURES_DIS_WCACHE 0x82    /* Disable write cache */
+#define SETFEATURES_EN_DEFECT  0x84    /* Enable Defect Management */
+#define SETFEATURES_DIS_APM    0x85    /* Disable advanced power management */
+#define SETFEATURES_EN_MSN     0x95    /* Enable Media Status Notification */
+#define SETFEATURES_EN_RLA     0xAA    /* Enable read look-ahead feature */
+#define SETFEATURES_PREFETCH   0xAB    /* Sets drive prefetch value */
+#define SETFEATURES_DIS_AAM    0xC2    /* Disable Automatic Acoustic Management */
+#define SETFEATURES_EN_RPOD    0xCC    /* Enable reverting to power on defaults */
+#define SETFEATURES_DIS_RI     0xDD    /* Disable release interrupt */
+#define SETFEATURES_DIS_SI     0xDE    /* Disable SERVICE interrupt */
+
+/* WIN_SECURITY sub-commands */
+
+#define SECURITY_SET_PASSWORD          0xBA
+#define SECURITY_UNLOCK                        0xBB
+#define SECURITY_ERASE_PREPARE         0xBC
+#define SECURITY_ERASE_UNIT            0xBD
+#define SECURITY_FREEZE_LOCK           0xBE
+#define SECURITY_DISABLE_PASSWORD      0xBF
+
+struct hd_geometry {
+      unsigned char heads;
+      unsigned char sectors;
+      unsigned short cylinders;
+      unsigned long start;
+};
+
+/* BIG GEOMETRY */
+struct hd_big_geometry {
+       unsigned char heads;
+       unsigned char sectors;
+       unsigned int cylinders;
+       unsigned long start;
+};
+
+/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x030n/0x031n */
+#define HDIO_GETGEO            0x0301  /* get device geometry */
+#define HDIO_GET_UNMASKINTR    0x0302  /* get current unmask setting */
+#define HDIO_GET_MULTCOUNT     0x0304  /* get current IDE blockmode setting */
+#define HDIO_GET_QDMA          0x0305  /* get use-qdma flag */
+#define HDIO_OBSOLETE_IDENTITY 0x0307  /* OBSOLETE, DO NOT USE: returns 142 bytes */
+#define HDIO_GET_KEEPSETTINGS  0x0308  /* get keep-settings-on-reset flag */
+#define HDIO_GET_32BIT         0x0309  /* get current io_32bit setting */
+#define HDIO_GET_NOWERR                0x030a  /* get ignore-write-error flag */
+#define HDIO_GET_DMA           0x030b  /* get use-dma flag */
+#define HDIO_GET_NICE          0x030c  /* get nice flags */
+#define HDIO_GET_IDENTITY      0x030d  /* get IDE identification info */
+#define HDIO_GET_WCACHE                0x030e  /* get write cache mode on|off */
+#define HDIO_GET_ACOUSTIC      0x030f  /* get acoustic value */
+#define        HDIO_GET_ADDRESS        0x0310  /* */
+
+#define HDIO_GET_BUSSTATE      0x031a  /* get the bus state of the hwif */
+#define HDIO_TRISTATE_HWIF     0x031b  /* execute a channel tristate */
+#define HDIO_DRIVE_RESET       0x031c  /* execute a device reset */
+#define HDIO_DRIVE_TASKFILE    0x031d  /* execute raw taskfile */
+#define HDIO_DRIVE_TASK                0x031e  /* execute task and special drive command */
+#define HDIO_DRIVE_CMD         0x031f  /* execute a special drive command */
+
+#define HDIO_DRIVE_CMD_AEB     HDIO_DRIVE_TASK
+
+/* hd/ide ctl's that pass (arg) non-ptr values are numbered 0x032n/0x033n */
+#define HDIO_SET_MULTCOUNT     0x0321  /* change IDE blockmode */
+#define HDIO_SET_UNMASKINTR    0x0322  /* permit other irqs during I/O */
+#define HDIO_SET_KEEPSETTINGS  0x0323  /* keep ioctl settings on reset */
+#define HDIO_SET_32BIT         0x0324  /* change io_32bit flags */
+#define HDIO_SET_NOWERR                0x0325  /* change ignore-write-error flag */
+#define HDIO_SET_DMA           0x0326  /* change use-dma flag */
+#define HDIO_SET_PIO_MODE      0x0327  /* reconfig interface to new speed */
+#define HDIO_SCAN_HWIF         0x0328  /* register and (re)scan interface */
+#define HDIO_SET_NICE          0x0329  /* set nice flags */
+#define HDIO_UNREGISTER_HWIF   0x032a  /* unregister interface */
+#define HDIO_SET_WCACHE                0x032b  /* change write cache enable-disable */
+#define HDIO_SET_ACOUSTIC      0x032c  /* change acoustic behavior */
+#define HDIO_SET_BUSSTATE      0x032d  /* set the bus state of the hwif */
+#define HDIO_SET_QDMA          0x032e  /* change use-qdma flag */
+#define HDIO_SET_ADDRESS       0x032f  /* change lba addressing modes */
+
+/* bus states */
+enum {
+       BUSSTATE_OFF = 0,
+       BUSSTATE_ON,
+       BUSSTATE_TRISTATE
+};
+
+/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x033n/0x033n */
+#define HDIO_GETGEO_BIG                0x0330  /* */
+#define HDIO_GETGEO_BIG_RAW    0x0331  /* */
+
+#define __NEW_HD_DRIVE_ID
+/* structure returned by HDIO_GET_IDENTITY,
+ * as per ANSI NCITS ATA6 rev.1b spec
+ */
+struct hd_driveid {
+       unsigned short  config;         /* lots of obsolete bit flags */
+       unsigned short  cyls;           /* Obsolete, "physical" cyls */
+       unsigned short  reserved2;      /* reserved (word 2) */
+       unsigned short  heads;          /* Obsolete, "physical" heads */
+       unsigned short  track_bytes;    /* unformatted bytes per track */
+       unsigned short  sector_bytes;   /* unformatted bytes per sector */
+       unsigned short  sectors;        /* Obsolete, "physical" sectors per track */
+       unsigned short  vendor0;        /* vendor unique */
+       unsigned short  vendor1;        /* vendor unique */
+       unsigned short  vendor2;        /* Retired vendor unique */
+       unsigned char   serial_no[20];  /* 0 = not_specified */
+       unsigned short  buf_type;       /* Retired */
+       unsigned short  buf_size;       /* Retired, 512 byte increments
+                                        * 0 = not_specified
+                                        */
+       unsigned short  ecc_bytes;      /* for r/w long cmds; 0 = not_specified */
+       unsigned char   fw_rev[8];      /* 0 = not_specified */
+       unsigned char   model[40];      /* 0 = not_specified */
+       unsigned char   max_multsect;   /* 0=not_implemented */
+       unsigned char   vendor3;        /* vendor unique */
+       unsigned short  dword_io;       /* 0=not_implemented; 1=implemented */
+       unsigned char   vendor4;        /* vendor unique */
+       unsigned char   capability;     /* (upper byte of word 49)
+                                        *  3:  IORDYsup
+                                        *  2:  IORDYsw
+                                        *  1:  LBA
+                                        *  0:  DMA
+                                        */
+       unsigned short  reserved50;     /* reserved (word 50) */
+       unsigned char   vendor5;        /* Obsolete, vendor unique */
+       unsigned char   tPIO;           /* Obsolete, 0=slow, 1=medium, 2=fast */
+       unsigned char   vendor6;        /* Obsolete, vendor unique */
+       unsigned char   tDMA;           /* Obsolete, 0=slow, 1=medium, 2=fast */
+       unsigned short  field_valid;    /* (word 53)
+                                        *  2:  ultra_ok        word  88
+                                        *  1:  eide_ok         words 64-70
+                                        *  0:  cur_ok          words 54-58
+                                        */
+       unsigned short  cur_cyls;       /* Obsolete, logical cylinders */
+       unsigned short  cur_heads;      /* Obsolete, l heads */
+       unsigned short  cur_sectors;    /* Obsolete, l sectors per track */
+       unsigned short  cur_capacity0;  /* Obsolete, l total sectors on drive */
+       unsigned short  cur_capacity1;  /* Obsolete, (2 words, misaligned int)     */
+       unsigned char   multsect;       /* current multiple sector count */
+       unsigned char   multsect_valid; /* when (bit0==1) multsect is ok */
+       unsigned int    lba_capacity;   /* Obsolete, total number of sectors */
+       unsigned short  dma_1word;      /* Obsolete, single-word dma info */
+       unsigned short  dma_mword;      /* multiple-word dma info */
+       unsigned short  eide_pio_modes; /* bits 0:mode3 1:mode4 */
+       unsigned short  eide_dma_min;   /* min mword dma cycle time (ns) */
+       unsigned short  eide_dma_time;  /* recommended mword dma cycle time (ns) */
+       unsigned short  eide_pio;       /* min cycle time (ns), no IORDY  */
+       unsigned short  eide_pio_iordy; /* min cycle time (ns), with IORDY */
+       unsigned short  words69_70[2];  /* reserved words 69-70
+                                        * future command overlap and queuing
+                                        */
+       /* HDIO_GET_IDENTITY currently returns only words 0 through 70 */
+       unsigned short  words71_74[4];  /* reserved words 71-74
+                                        * for IDENTIFY PACKET DEVICE command
+                                        */
+       unsigned short  queue_depth;    /* (word 75)
+                                        * 15:5 reserved
+                                        *  4:0 Maximum queue depth -1
+                                        */
+       unsigned short  words76_79[4];  /* reserved words 76-79 */
+       unsigned short  major_rev_num;  /* (word 80) */
+       unsigned short  minor_rev_num;  /* (word 81) */
+       unsigned short  command_set_1;  /* (word 82) supported
+                                        * 15:  Obsolete
+                                        * 14:  NOP command
+                                        * 13:  READ_BUFFER
+                                        * 12:  WRITE_BUFFER
+                                        * 11:  Obsolete
+                                        * 10:  Host Protected Area
+                                        *  9:  DEVICE Reset
+                                        *  8:  SERVICE Interrupt
+                                        *  7:  Release Interrupt
+                                        *  6:  look-ahead
+                                        *  5:  write cache
+                                        *  4:  PACKET Command
+                                        *  3:  Power Management Feature Set
+                                        *  2:  Removable Feature Set
+                                        *  1:  Security Feature Set
+                                        *  0:  SMART Feature Set
+                                        */
+       unsigned short  command_set_2;  /* (word 83)
+                                        * 15:  Shall be ZERO
+                                        * 14:  Shall be ONE
+                                        * 13:  FLUSH CACHE EXT
+                                        * 12:  FLUSH CACHE
+                                        * 11:  Device Configuration Overlay
+                                        * 10:  48-bit Address Feature Set
+                                        *  9:  Automatic Acoustic Management
+                                        *  8:  SET MAX security
+                                        *  7:  reserved 1407DT PARTIES
+                                        *  6:  SetF sub-command Power-Up
+                                        *  5:  Power-Up in Standby Feature Set
+                                        *  4:  Removable Media Notification
+                                        *  3:  APM Feature Set
+                                        *  2:  CFA Feature Set
+                                        *  1:  READ/WRITE DMA QUEUED
+                                        *  0:  Download MicroCode
+                                        */
+       unsigned short  cfsse;          /* (word 84)
+                                        * cmd set-feature supported extensions
+                                        * 15:  Shall be ZERO
+                                        * 14:  Shall be ONE
+                                        * 13:3 reserved
+                                        *  2:  Media Serial Number Valid
+                                        *  1:  SMART selt-test supported
+                                        *  0:  SMART error logging
+                                        */
+       unsigned short  cfs_enable_1;   /* (word 85)
+                                        * command set-feature enabled
+                                        * 15:  Obsolete
+                                        * 14:  NOP command
+                                        * 13:  READ_BUFFER
+                                        * 12:  WRITE_BUFFER
+                                        * 11:  Obsolete
+                                        * 10:  Host Protected Area
+                                        *  9:  DEVICE Reset
+                                        *  8:  SERVICE Interrupt
+                                        *  7:  Release Interrupt
+                                        *  6:  look-ahead
+                                        *  5:  write cache
+                                        *  4:  PACKET Command
+                                        *  3:  Power Management Feature Set
+                                        *  2:  Removable Feature Set
+                                        *  1:  Security Feature Set
+                                        *  0:  SMART Feature Set
+                                        */
+       unsigned short  cfs_enable_2;   /* (word 86)
+                                        * command set-feature enabled
+                                        * 15:  Shall be ZERO
+                                        * 14:  Shall be ONE
+                                        * 13:  FLUSH CACHE EXT
+                                        * 12:  FLUSH CACHE
+                                        * 11:  Device Configuration Overlay
+                                        * 10:  48-bit Address Feature Set
+                                        *  9:  Automatic Acoustic Management
+                                        *  8:  SET MAX security
+                                        *  7:  reserved 1407DT PARTIES
+                                        *  6:  SetF sub-command Power-Up
+                                        *  5:  Power-Up in Standby Feature Set
+                                        *  4:  Removable Media Notification
+                                        *  3:  APM Feature Set
+                                        *  2:  CFA Feature Set
+                                        *  1:  READ/WRITE DMA QUEUED
+                                        *  0:  Download MicroCode
+                                        */
+       unsigned short  csf_default;    /* (word 87)
+                                        * command set-feature default
+                                        * 15:  Shall be ZERO
+                                        * 14:  Shall be ONE
+                                        * 13:3 reserved
+                                        *  2:  Media Serial Number Valid
+                                        *  1:  SMART selt-test supported
+                                        *  0:  SMART error logging
+                                        */
+       unsigned short  dma_ultra;      /* (word 88) */
+       unsigned short  word89;         /* reserved (word 89) */
+       unsigned short  word90;         /* reserved (word 90) */
+       unsigned short  CurAPMvalues;   /* current APM values */
+       unsigned short  word92;         /* reserved (word 92) */
+       unsigned short  hw_config;      /* hardware config (word 93)
+                                        * 15:
+                                        * 14:
+                                        * 13:
+                                        * 12:
+                                        * 11:
+                                        * 10:
+                                        *  9:
+                                        *  8:
+                                        *  7:
+                                        *  6:
+                                        *  5:
+                                        *  4:
+                                        *  3:
+                                        *  2:
+                                        *  1:
+                                        *  0:
+                                        */
+       unsigned short  acoustic;       /* (word 94)
+                                        * 15:8 Vendor's recommended value
+                                        *  7:0 current value
+                                        */
+       unsigned short  words95_99[5];  /* reserved words 95-99 */
+#if 0
+       unsigned short  words100_103[4] ;/* reserved words 100-103 */
+#else
+       unsigned long long lba_capacity_2;/* 48-bit total number of sectors */
+#endif
+       unsigned short  words104_125[22];/* reserved words 104-125 */
+       unsigned short  last_lun;       /* (word 126) */
+       unsigned short  word127;        /* (word 127) Feature Set
+                                        * Removable Media Notification
+                                        * 15:2 reserved
+                                        *  1:0 00 = not supported
+                                        *      01 = supported
+                                        *      10 = reserved
+                                        *      11 = reserved
+                                        */
+       unsigned short  dlf;            /* (word 128)
+                                        * device lock function
+                                        * 15:9 reserved
+                                        *  8   security level 1:max 0:high
+                                        *  7:6 reserved
+                                        *  5   enhanced erase
+                                        *  4   expire
+                                        *  3   frozen
+                                        *  2   locked
+                                        *  1   en/disabled
+                                        *  0   capability
+                                        */
+       unsigned short  csfo;           /*  (word 129)
+                                        * current set features options
+                                        * 15:4 reserved
+                                        *  3:  auto reassign
+                                        *  2:  reverting
+                                        *  1:  read-look-ahead
+                                        *  0:  write cache
+                                        */
+       unsigned short  words130_155[26];/* reserved vendor words 130-155 */
+       unsigned short  word156;        /* reserved vendor word 156 */
+       unsigned short  words157_159[3];/* reserved vendor words 157-159 */
+       unsigned short  cfa_power;      /* (word 160) CFA Power Mode
+                                        * 15 word 160 supported
+                                        * 14 reserved
+                                        * 13
+                                        * 12
+                                        * 11:0
+                                        */
+       unsigned short  words161_175[14];/* Reserved for CFA */
+       unsigned short  words176_205[31];/* Current Media Serial Number */
+       unsigned short  words206_254[48];/* reserved words 206-254 */
+       unsigned short  integrity_word; /* (word 255)
+                                        * 15:8 Checksum
+                                        *  7:0 Signature
+                                        */
+};
+
+/*
+ * IDE "nice" flags. These are used on a per drive basis to determine
+ * when to be nice and give more bandwidth to the other devices which
+ * share the same IDE bus.
+ */
+#define IDE_NICE_DSC_OVERLAP   (0)     /* per the DSC overlap protocol */
+#define IDE_NICE_ATAPI_OVERLAP (1)     /* not supported yet */
+#define IDE_NICE_0             (2)     /* when sure that it won't affect us */
+#define IDE_NICE_1             (3)     /* when probably won't affect us much */
+#define IDE_NICE_2             (4)     /* when we know it's on our expense */
+
+#ifdef __KERNEL__
+/*
+ * These routines are used for kernel command line parameters from main.c:
+ */
+#include <xen/config.h>
+
+#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
+int ide_register(int io_port, int ctl_port, int irq);
+void ide_unregister(unsigned int);
+#endif /* CONFIG_BLK_DEV_IDE || CONFIG_BLK_DEV_IDE_MODULE */
+
+#endif  /* __KERNEL__ */
+
+#endif /* _LINUX_HDREG_H */
diff --git a/xen/include/xen/hdsmart.h b/xen/include/xen/hdsmart.h
new file mode 100644 (file)
index 0000000..7974a47
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * linux/include/linux/hdsmart.h
+ *
+ * Copyright (C) 1999-2000     Michael Cornwell <cornwell@acm.org>
+ * Copyright (C) 2000          Andre Hedrick <andre@linux-ide.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * You should have received a copy of the GNU General Public License
+ * (for example /usr/src/linux/COPYING); if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef _LINUX_HDSMART_H
+#define _LINUX_HDSMART_H
+
+#define OFFLINE_FULL_SCAN              0
+#define SHORT_SELF_TEST                        1
+#define EXTEND_SELF_TEST               2
+#define SHORT_CAPTIVE_SELF_TEST                129
+#define EXTEND_CAPTIVE_SELF_TEST       130
+
+/* smart_attribute is the vendor specific in SFF-8035 spec */
+typedef struct ata_smart_attribute_s {
+       unsigned char                   id;
+       unsigned short                  status_flag;
+       unsigned char                   normalized;
+       unsigned char                   worse_normal;
+       unsigned char                   raw[6];
+       unsigned char                   reserv;
+} __attribute__ ((packed)) ata_smart_attribute_t;
+
+/* smart_values is format of the read drive Atrribute command */
+typedef struct ata_smart_values_s {
+       unsigned short                  revnumber;
+       ata_smart_attribute_t           vendor_attributes [30];
+        unsigned char                  offline_data_collection_status;
+        unsigned char                  self_test_exec_status;
+       unsigned short                  total_time_to_complete_off_line;
+       unsigned char                   vendor_specific_366;
+       unsigned char                   offline_data_collection_capability;
+       unsigned short                  smart_capability;
+       unsigned char                   errorlog_capability;
+       unsigned char                   vendor_specific_371;
+       unsigned char                   short_test_completion_time;
+       unsigned char                   extend_test_completion_time;
+       unsigned char                   reserved_374_385 [12];
+       unsigned char                   vendor_specific_386_509 [125];
+       unsigned char                   chksum;
+} __attribute__ ((packed)) ata_smart_values_t;
+
+/* Smart Threshold data structures */
+/* Vendor attribute of SMART Threshold */
+typedef struct ata_smart_threshold_entry_s {
+       unsigned char                   id;
+       unsigned char                   normalized_threshold;
+       unsigned char                   reserved[10];
+} __attribute__ ((packed)) ata_smart_threshold_entry_t;
+
+/* Format of Read SMART THreshold Command */
+typedef struct ata_smart_thresholds_s {
+       unsigned short                  revnumber;
+       ata_smart_threshold_entry_t     thres_entries[30];
+       unsigned char                   reserved[149];
+       unsigned char                   chksum;
+} __attribute__ ((packed)) ata_smart_thresholds_t;
+
+typedef struct ata_smart_errorlog_command_struct_s {
+       unsigned char                   devicecontrolreg;
+       unsigned char                   featuresreg;
+       unsigned char                   sector_count;
+       unsigned char                   sector_number;
+       unsigned char                   cylinder_low;
+       unsigned char                   cylinder_high;
+       unsigned char                   drive_head;
+       unsigned char                   commandreg;
+       unsigned int                    timestamp;
+} __attribute__ ((packed)) ata_smart_errorlog_command_struct_t;
+
+typedef struct ata_smart_errorlog_error_struct_s {
+       unsigned char                   error_condition;
+       unsigned char                   extended_error[14];
+       unsigned char                   state;
+       unsigned short                  timestamp;
+} __attribute__ ((packed)) ata_smart_errorlog_error_struct_t;
+
+typedef struct ata_smart_errorlog_struct_s {
+       ata_smart_errorlog_command_struct_t     commands[6];
+       ata_smart_errorlog_error_struct_t       error_struct;
+} __attribute__ ((packed)) ata_smart_errorlog_struct_t;
+
+typedef struct ata_smart_errorlog_s {
+       unsigned char                   revnumber;
+       unsigned char                   error_log_pointer;
+       ata_smart_errorlog_struct_t     errorlog_struct[5];
+       unsigned short                  ata_error_count;
+       unsigned short                  non_fatal_count;
+       unsigned short                  drive_timeout_count;
+       unsigned char                   reserved[53];
+       unsigned char                   chksum;
+} __attribute__ ((packed)) ata_smart_errorlog_t;
+
+typedef struct ata_smart_selftestlog_struct_s {
+       unsigned char                   selftestnumber;
+       unsigned char                   selfteststatus;
+       unsigned short                  timestamp;
+       unsigned char                   selftestfailurecheckpoint;
+       unsigned int                    lbafirstfailure;
+       unsigned char                   vendorspecific[15];
+} __attribute__ ((packed)) ata_smart_selftestlog_struct_t;
+
+typedef struct ata_smart_selftestlog_s {
+       unsigned short                  revnumber;
+       ata_smart_selftestlog_struct_t  selftest_struct[21];
+       unsigned char                   vendorspecific[2];
+       unsigned char                   mostrecenttest;
+       unsigned char                   resevered[2];
+       unsigned char                   chksum;
+} __attribute__ ((packed)) ata_smart_selftestlog_t;
+
+#endif /* _LINUX_HDSMART_H */
diff --git a/xen/include/xen/ide.h b/xen/include/xen/ide.h
new file mode 100644 (file)
index 0000000..bf0dfa2
--- /dev/null
@@ -0,0 +1,1105 @@
+#ifndef _IDE_H
+#define _IDE_H
+/*
+ *  linux/include/linux/ide.h
+ *
+ *  Copyright (C) 1994-1998  Linus Torvalds & authors
+ */
+
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/ioport.h>
+#include <xen/hdreg.h>
+#include <xen/hdsmart.h>
+#include <xen/major.h>
+#include <xen/blkdev.h>
+#include <xen/timer.h>
+/*#include <xen/devfs_fs_kernel.h>*/
+#include <asm/hdreg.h>
+
+/*
+ * This is the multiple IDE interface driver, as evolved from hd.c.
+ * It supports up to four IDE interfaces, on one or more IRQs (usually 14 & 15).
+ * There can be up to two drives per interface, as per the ATA-2 spec.
+ *
+ * Primary i/f:    ide0: major=3;  (hda)         minor=0; (hdb)         minor=64
+ * Secondary i/f:  ide1: major=22; (hdc or hd1a) minor=0; (hdd or hd1b) minor=64
+ * Tertiary i/f:   ide2: major=33; (hde)         minor=0; (hdf)         minor=64
+ * Quaternary i/f: ide3: major=34; (hdg)         minor=0; (hdh)         minor=64
+ */
+
+/******************************************************************************
+ * IDE driver configuration options (play with these as desired):
+ *
+ * REALLY_SLOW_IO can be defined in ide.c and ide-cd.c, if necessary
+ */
+#undef REALLY_FAST_IO                  /* define if ide ports are perfect */
+#define INITIAL_MULT_COUNT     0       /* off=0; on=2,4,8,16,32, etc.. */
+
+#ifndef SUPPORT_SLOW_DATA_PORTS                /* 1 to support slow data ports */
+#define SUPPORT_SLOW_DATA_PORTS        1       /* 0 to reduce kernel size */
+#endif
+#ifndef SUPPORT_VLB_SYNC               /* 1 to support weird 32-bit chips */
+#define SUPPORT_VLB_SYNC       1       /* 0 to reduce kernel size */
+#endif
+#ifndef DISK_RECOVERY_TIME             /* off=0; on=access_delay_time */
+#define DISK_RECOVERY_TIME     0       /*  for hardware that needs it */
+#endif
+#ifndef OK_TO_RESET_CONTROLLER         /* 1 needed for good error recovery */
+#define OK_TO_RESET_CONTROLLER 1       /* 0 for use with AH2372A/B interface */
+#endif
+#ifndef FANCY_STATUS_DUMPS             /* 1 for human-readable drive errors */
+#define FANCY_STATUS_DUMPS     1       /* 0 to reduce kernel size */
+#endif
+
+#ifdef CONFIG_BLK_DEV_CMD640
+#if 0  /* change to 1 when debugging cmd640 problems */
+void cmd640_dump_regs (void);
+#define CMD640_DUMP_REGS cmd640_dump_regs() /* for debugging cmd640 chipset */
+#endif
+#endif  /* CONFIG_BLK_DEV_CMD640 */
+
+#ifndef DISABLE_IRQ_NOSYNC
+#define DISABLE_IRQ_NOSYNC     0
+#endif
+
+/*
+ * IDE_DRIVE_CMD is used to implement many features of the hdparm utility
+ */
+#define IDE_DRIVE_CMD                  99      /* (magic) undef to reduce kernel size*/
+
+#define IDE_DRIVE_TASK                 98
+
+/*
+ * IDE_DRIVE_TASKFILE is used to implement many features needed for raw tasks
+ */
+#define IDE_DRIVE_TASKFILE             97
+
+/*
+ *  "No user-serviceable parts" beyond this point  :)
+ *****************************************************************************/
+
+typedef unsigned char  byte;   /* used everywhere */
+
+/*
+ * Probably not wise to fiddle with these
+ */
+#define ERROR_MAX      8       /* Max read/write errors per sector */
+#define ERROR_RESET    3       /* Reset controller every 4th retry */
+#define ERROR_RECAL    1       /* Recalibrate every 2nd retry */
+
+/*
+ * state flags
+ */
+#define DMA_PIO_RETRY  1       /* retrying in PIO */
+
+/*
+ * Ensure that various configuration flags have compatible settings
+ */
+#ifdef REALLY_SLOW_IO
+#undef REALLY_FAST_IO
+#endif
+
+#define HWIF(drive)            ((ide_hwif_t *)((drive)->hwif))
+#define HWGROUP(drive)         ((ide_hwgroup_t *)(HWIF(drive)->hwgroup))
+
+/*
+ * Definitions for accessing IDE controller registers
+ */
+#define IDE_NR_PORTS           (10)
+
+#define IDE_DATA_OFFSET                (0)
+#define IDE_ERROR_OFFSET       (1)
+#define IDE_NSECTOR_OFFSET     (2)
+#define IDE_SECTOR_OFFSET      (3)
+#define IDE_LCYL_OFFSET                (4)
+#define IDE_HCYL_OFFSET                (5)
+#define IDE_SELECT_OFFSET      (6)
+#define IDE_STATUS_OFFSET      (7)
+#define IDE_CONTROL_OFFSET     (8)
+#define IDE_IRQ_OFFSET         (9)
+
+#define IDE_FEATURE_OFFSET     IDE_ERROR_OFFSET
+#define IDE_COMMAND_OFFSET     IDE_STATUS_OFFSET
+
+#define IDE_DATA_OFFSET_HOB    (0)
+#define IDE_ERROR_OFFSET_HOB   (1)
+#define IDE_NSECTOR_OFFSET_HOB (2)
+#define IDE_SECTOR_OFFSET_HOB  (3)
+#define IDE_LCYL_OFFSET_HOB    (4)
+#define IDE_HCYL_OFFSET_HOB    (5)
+#define IDE_SELECT_OFFSET_HOB  (6)
+#define IDE_CONTROL_OFFSET_HOB (7)
+
+#define IDE_FEATURE_OFFSET_HOB IDE_ERROR_OFFSET_HOB
+
+#define IDE_DATA_REG           (HWIF(drive)->io_ports[IDE_DATA_OFFSET])
+#define IDE_ERROR_REG          (HWIF(drive)->io_ports[IDE_ERROR_OFFSET])
+#define IDE_NSECTOR_REG                (HWIF(drive)->io_ports[IDE_NSECTOR_OFFSET])
+#define IDE_SECTOR_REG         (HWIF(drive)->io_ports[IDE_SECTOR_OFFSET])
+#define IDE_LCYL_REG           (HWIF(drive)->io_ports[IDE_LCYL_OFFSET])
+#define IDE_HCYL_REG           (HWIF(drive)->io_ports[IDE_HCYL_OFFSET])
+#define IDE_SELECT_REG         (HWIF(drive)->io_ports[IDE_SELECT_OFFSET])
+#define IDE_STATUS_REG         (HWIF(drive)->io_ports[IDE_STATUS_OFFSET])
+#define IDE_CONTROL_REG                (HWIF(drive)->io_ports[IDE_CONTROL_OFFSET])
+#define IDE_IRQ_REG            (HWIF(drive)->io_ports[IDE_IRQ_OFFSET])
+
+#define IDE_DATA_REG_HOB       (HWIF(drive)->io_ports[IDE_DATA_OFFSET])
+#define IDE_ERROR_REG_HOB      (HWIF(drive)->io_ports[IDE_ERROR_OFFSET])
+#define IDE_NSECTOR_REG_HOB    (HWIF(drive)->io_ports[IDE_NSECTOR_OFFSET])
+#define IDE_SECTOR_REG_HOB     (HWIF(drive)->io_ports[IDE_SECTOR_OFFSET])
+#define IDE_LCYL_REG_HOB       (HWIF(drive)->io_ports[IDE_LCYL_OFFSET])
+#define IDE_HCYL_REG_HOB       (HWIF(drive)->io_ports[IDE_HCYL_OFFSET])
+#define IDE_SELECT_REG_HOB     (HWIF(drive)->io_ports[IDE_SELECT_OFFSET])
+#define IDE_STATUS_REG_HOB     (HWIF(drive)->io_ports[IDE_STATUS_OFFSET])
+#define IDE_CONTROL_REG_HOB    (HWIF(drive)->io_ports[IDE_CONTROL_OFFSET])
+
+#define IDE_FEATURE_REG                IDE_ERROR_REG
+#define IDE_COMMAND_REG                IDE_STATUS_REG
+#define IDE_ALTSTATUS_REG      IDE_CONTROL_REG
+#define IDE_IREASON_REG                IDE_NSECTOR_REG
+#define IDE_BCOUNTL_REG                IDE_LCYL_REG
+#define IDE_BCOUNTH_REG                IDE_HCYL_REG
+
+#define GET_ERR()              IN_BYTE(IDE_ERROR_REG)
+#define GET_STAT()             IN_BYTE(IDE_STATUS_REG)
+#define GET_ALTSTAT()          IN_BYTE(IDE_CONTROL_REG)
+#define OK_STAT(stat,good,bad) (((stat)&((good)|(bad)))==(good))
+#define BAD_R_STAT             (BUSY_STAT   | ERR_STAT)
+#define BAD_W_STAT             (BAD_R_STAT  | WRERR_STAT)
+#define BAD_STAT               (BAD_R_STAT  | DRQ_STAT)
+#define DRIVE_READY            (READY_STAT  | SEEK_STAT)
+#define DATA_READY             (DRQ_STAT)
+
+/*
+ * Some more useful definitions
+ */
+#define IDE_MAJOR_NAME "hd"    /* the same for all i/f; see also genhd.c */
+#define MAJOR_NAME     IDE_MAJOR_NAME
+#define PARTN_BITS     6       /* number of minor dev bits for partitions */
+#define PARTN_MASK     ((1<<PARTN_BITS)-1)     /* a useful bit mask */
+#define MAX_DRIVES     2       /* per interface; 2 assumed by lots of code */
+#define CASCADE_DRIVES 8       /* per interface; 8|2 assumed by lots of code */
+#define SECTOR_SIZE    512
+#define SECTOR_WORDS   (SECTOR_SIZE / 4)       /* number of 32bit words per sector */
+#define IDE_LARGE_SEEK(b1,b2,t)        (((b1) > (b2) + (t)) || ((b2) > (b1) + (t)))
+#define IDE_MIN(a,b)   ((a)<(b) ? (a):(b))
+#define IDE_MAX(a,b)   ((a)>(b) ? (a):(b))
+
+#ifndef SPLIT_WORD
+#  define SPLIT_WORD(W,HB,LB) ((HB)=(W>>8), (LB)=(W-((W>>8)<<8)))
+#endif
+#ifndef MAKE_WORD
+#  define MAKE_WORD(W,HB,LB) ((W)=((HB<<8)+LB))
+#endif
+
+
+/*
+ * Timeouts for various operations:
+ */
+#define WAIT_DRQ       (5*HZ/100)      /* 50msec - spec allows up to 20ms */
+#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
+#define WAIT_READY     (5*HZ)          /* 5sec - some laptops are very slow */
+#else
+#define WAIT_READY     (3*HZ/100)      /* 30msec - should be instantaneous */
+#endif /* CONFIG_APM || CONFIG_APM_MODULE */
+#define WAIT_PIDENTIFY (10*HZ) /* 10sec  - should be less than 3ms (?), if all ATAPI CD is closed at boot */
+#define WAIT_WORSTCASE (30*HZ) /* 30sec  - worst case when spinning up */
+#define WAIT_CMD       (10*HZ) /* 10sec  - maximum wait for an IRQ to happen */
+#define WAIT_MIN_SLEEP (2*HZ/100)      /* 20msec - minimum sleep time */
+
+#define SELECT_DRIVE(hwif,drive)                               \
+{                                                              \
+       if (hwif->selectproc)                                   \
+               hwif->selectproc(drive);                        \
+       OUT_BYTE((drive)->select.all, hwif->io_ports[IDE_SELECT_OFFSET]); \
+}
+
+#define SELECT_INTERRUPT(hwif,drive)                           \
+{                                                              \
+       if (hwif->intrproc)                                     \
+               hwif->intrproc(drive);                          \
+       else                                                    \
+               OUT_BYTE((drive)->ctl|2, hwif->io_ports[IDE_CONTROL_OFFSET]);   \
+}
+
+#define SELECT_MASK(hwif,drive,mask)                           \
+{                                                              \
+       if (hwif->maskproc)                                     \
+               hwif->maskproc(drive,mask);                     \
+}
+
+#define SELECT_READ_WRITE(hwif,drive,func)                     \
+{                                                              \
+       if (hwif->rwproc)                                       \
+               hwif->rwproc(drive,func);                       \
+}
+
+#define QUIRK_LIST(hwif,drive)                                 \
+{                                                              \
+       if (hwif->quirkproc)                                    \
+               (drive)->quirk_list = hwif->quirkproc(drive);   \
+}
+
+#define HOST(hwif,chipset)                                     \
+{                                                              \
+       return ((hwif)->chipset == chipset) ? 1 : 0;            \
+}
+
+#define IDE_DEBUG(lineno) \
+       printk("%s,%s,line=%d\n", __FILE__, __FUNCTION__, (lineno))
+
+/*
+ * Check for an interrupt and acknowledge the interrupt status
+ */
+struct hwif_s;
+typedef int (ide_ack_intr_t)(struct hwif_s *);
+
+#ifndef NO_DMA
+#define NO_DMA  255
+#endif
+
+/*
+ * hwif_chipset_t is used to keep track of the specific hardware
+ * chipset used by each IDE interface, if known.
+ */
+typedef enum { ide_unknown,    ide_generic,    ide_pci,
+               ide_cmd640,     ide_dtc2278,    ide_ali14xx,
+               ide_qd65xx,     ide_umc8672,    ide_ht6560b,
+               ide_pdc4030,    ide_rz1000,     ide_trm290,
+               ide_cmd646,     ide_cy82c693,   ide_4drives,
+               ide_pmac,       ide_etrax100
+} hwif_chipset_t;
+
+/*
+ * Structure to hold all information about the location of this port
+ */
+typedef struct hw_regs_s {
+       ide_ioreg_t     io_ports[IDE_NR_PORTS]; /* task file registers */
+       int             irq;                    /* our irq number */
+       int             dma;                    /* our dma entry */
+       ide_ack_intr_t  *ack_intr;              /* acknowledge interrupt */
+       void            *priv;                  /* interface specific data */
+       hwif_chipset_t  chipset;
+} hw_regs_t;
+
+/*
+ * Register new hardware with ide
+ */
+int ide_register_hw(hw_regs_t *hw, struct hwif_s **hwifp);
+
+/*
+ * Set up hw_regs_t structure before calling ide_register_hw (optional)
+ */
+void ide_setup_ports(  hw_regs_t *hw,
+                       ide_ioreg_t base,
+                       int *offsets,
+                       ide_ioreg_t ctrl,
+                       ide_ioreg_t intr,
+                       ide_ack_intr_t *ack_intr,
+                       int irq);
+
+#include <asm/ide.h>
+
+/*
+ * If the arch-dependant ide.h did not declare/define any OUT_BYTE
+ * or IN_BYTE functions, we make some defaults here.
+ */
+
+#ifndef HAVE_ARCH_OUT_BYTE
+#ifdef REALLY_FAST_IO
+#define OUT_BYTE(b,p)          outb((b),(p))
+#define OUT_WORD(w,p)          outw((w),(p))
+#else
+#define OUT_BYTE(b,p)          outb_p((b),(p))
+#define OUT_WORD(w,p)          outw_p((w),(p))
+#endif
+#endif
+
+#ifndef HAVE_ARCH_IN_BYTE
+#ifdef REALLY_FAST_IO
+#define IN_BYTE(p)             (byte)inb(p)
+#define IN_WORD(p)             (short)inw(p)
+#else
+#define IN_BYTE(p)             (byte)inb_p(p)
+#define IN_WORD(p)             (short)inw_p(p)
+#endif
+#endif
+
+/*
+ * Now for the data we need to maintain per-drive:  ide_drive_t
+ */
+
+#define ide_scsi       0x21
+#define ide_disk       0x20
+#define ide_optical    0x7
+#define ide_cdrom      0x5
+#define ide_tape       0x1
+#define ide_floppy     0x0
+
+typedef union {
+       unsigned all                    : 8;    /* all of the bits together */
+       struct {
+               unsigned set_geometry   : 1;    /* respecify drive geometry */
+               unsigned recalibrate    : 1;    /* seek to cyl 0      */
+               unsigned set_multmode   : 1;    /* set multmode count */
+               unsigned set_tune       : 1;    /* tune interface for drive */
+               unsigned reserved       : 4;    /* unused */
+       } b;
+} special_t;
+
+typedef struct ide_drive_s {
+       request_queue_t          queue; /* request queue */
+       struct ide_drive_s      *next;  /* circular list of hwgroup drives */
+       unsigned long sleep;            /* sleep until this time */
+       unsigned long service_start;    /* time we started last request */
+       unsigned long service_time;     /* service time of last request */
+       unsigned long timeout;          /* max time to wait for irq */
+       special_t       special;        /* special action flags */
+       byte     keep_settings;         /* restore settings after drive reset */
+       byte     using_dma;             /* disk is using dma for read/write */
+       byte     retry_pio;             /* retrying dma capable host in pio */
+       byte     state;                 /* retry state */
+       byte     waiting_for_dma;       /* dma currently in progress */
+       byte     unmask;                /* flag: okay to unmask other irqs */
+       byte     slow;                  /* flag: slow data port */
+       byte     bswap;                 /* flag: byte swap data */
+       byte     dsc_overlap;           /* flag: DSC overlap */
+       byte     nice1;                 /* flag: give potential excess bandwidth */
+       unsigned present        : 1;    /* drive is physically present */
+       unsigned noprobe        : 1;    /* from:  hdx=noprobe */
+       unsigned busy           : 1;    /* currently doing revalidate_disk() */
+       unsigned removable      : 1;    /* 1 if need to do check_media_change */
+       unsigned forced_geom    : 1;    /* 1 if hdx=c,h,s was given at boot */
+       unsigned no_unmask      : 1;    /* disallow setting unmask bit */
+       unsigned no_io_32bit    : 1;    /* disallow enabling 32bit I/O */
+       unsigned nobios         : 1;    /* flag: do not probe bios for drive */
+       unsigned revalidate     : 1;    /* request revalidation */
+       unsigned atapi_overlap  : 1;    /* flag: ATAPI overlap (not supported) */
+       unsigned nice0          : 1;    /* flag: give obvious excess bandwidth */
+       unsigned nice2          : 1;    /* flag: give a share in our own bandwidth */
+       unsigned doorlocking    : 1;    /* flag: for removable only: door lock/unlock works */
+       unsigned autotune       : 2;    /* 1=autotune, 2=noautotune, 0=default */
+       unsigned remap_0_to_1   : 2;    /* 0=remap if ezdrive, 1=remap, 2=noremap */
+       unsigned ata_flash      : 1;    /* 1=present, 0=default */
+       unsigned        addressing;     /* : 2; 0=28-bit, 1=48-bit, 2=64-bit */
+       byte            scsi;           /* 0=default, 1=skip current ide-subdriver for ide-scsi emulation */
+       byte            media;          /* disk, cdrom, tape, floppy, ... */
+       select_t        select;         /* basic drive/head select reg value */
+       byte            ctl;            /* "normal" value for IDE_CONTROL_REG */
+       byte            ready_stat;     /* min status value for drive ready */
+       byte            mult_count;     /* current multiple sector setting */
+       byte            mult_req;       /* requested multiple sector setting */
+       byte            tune_req;       /* requested drive tuning setting */
+       byte            io_32bit;       /* 0=16-bit, 1=32-bit, 2/3=32bit+sync */
+       byte            bad_wstat;      /* used for ignoring WRERR_STAT */
+       byte            nowerr;         /* used for ignoring WRERR_STAT */
+       byte            sect0;          /* offset of first sector for DM6:DDO */
+       unsigned int    usage;          /* current "open()" count for drive */
+       byte            head;           /* "real" number of heads */
+       byte            sect;           /* "real" sectors per track */
+       byte            bios_head;      /* BIOS/fdisk/LILO number of heads */
+       byte            bios_sect;      /* BIOS/fdisk/LILO sectors per track */
+       unsigned int    bios_cyl;       /* BIOS/fdisk/LILO number of cyls */
+       unsigned int    cyl;            /* "real" number of cyls */
+       unsigned long   capacity;       /* total number of sectors */
+       unsigned long long capacity48;  /* total number of sectors */
+       unsigned int    drive_data;     /* for use by tuneproc/selectproc as needed */
+       void              *hwif;        /* actually (ide_hwif_t *) */
+    /*wait_queue_head_t wqueue;*/      /* used to wait for drive in open() */
+       struct hd_driveid *id;          /* drive model identification info */
+       struct hd_struct  *part;        /* drive partition table */
+       char            name[4];        /* drive name, such as "hda" */
+       void            *driver;        /* (ide_driver_t *) */
+       void            *driver_data;   /* extra driver data */
+    /*devfs_handle_t   de;     */      /* directory for device */
+       struct proc_dir_entry *proc;    /* /proc/ide/ directory entry */
+       void            *settings;      /* /proc/ide/ drive settings */
+       char            driver_req[10]; /* requests specific driver */
+       int             last_lun;       /* last logical unit */
+       int             forced_lun;     /* if hdxlun was given at boot */
+       int             lun;            /* logical unit */
+       int             crc_count;      /* crc counter to reduce drive speed */
+       byte            quirk_list;     /* drive is considered quirky if set for a specific host */
+       byte            suspend_reset;  /* drive suspend mode flag, soft-reset recovers */
+       byte            init_speed;     /* transfer rate set at boot */
+       byte            current_speed;  /* current transfer rate set */
+       byte            dn;             /* now wide spread use */
+       byte            wcache;         /* status of write cache */
+       byte            acoustic;       /* acoustic management */
+       unsigned int    failures;       /* current failure count */
+       unsigned int    max_failures;   /* maximum allowed failure count */
+} ide_drive_t;
+
+/*
+ * An ide_dmaproc_t() initiates/aborts DMA read/write operations on a drive.
+ *
+ * The caller is assumed to have selected the drive and programmed the drive's
+ * sector address using CHS or LBA.  All that remains is to prepare for DMA
+ * and then issue the actual read/write DMA/PIO command to the drive.
+ *
+ * Returns 0 if all went well.
+ * Returns 1 if DMA read/write could not be started, in which case the caller
+ * should either try again later, or revert to PIO for the current request.
+ */
+typedef enum { ide_dma_read,   ide_dma_write,          ide_dma_begin,
+               ide_dma_end,    ide_dma_check,          ide_dma_on,
+               ide_dma_off,    ide_dma_off_quietly,    ide_dma_test_irq,
+               ide_dma_bad_drive,                      ide_dma_good_drive,
+               ide_dma_verbose,                        ide_dma_retune,
+               ide_dma_lostirq,                        ide_dma_timeout
+} ide_dma_action_t;
+
+typedef int (ide_dmaproc_t)(ide_dma_action_t, ide_drive_t *);
+
+/*
+ * An ide_ideproc_t() performs CPU-polled transfers to/from a drive.
+ * Arguments are: the drive, the buffer pointer, and the length (in bytes or
+ * words depending on if it's an IDE or ATAPI call).
+ *
+ * If it is not defined for a controller, standard-code is used from ide.c.
+ *
+ * Controllers which are not memory-mapped in the standard way need to 
+ * override that mechanism using this function to work.
+ *
+ */
+typedef enum { ideproc_ide_input_data,    ideproc_ide_output_data,
+              ideproc_atapi_input_bytes, ideproc_atapi_output_bytes
+} ide_ide_action_t;
+
+typedef void (ide_ideproc_t)(ide_ide_action_t, ide_drive_t *, void *, unsigned int);
+
+/*
+ * An ide_tuneproc_t() is used to set the speed of an IDE interface
+ * to a particular PIO mode.  The "byte" parameter is used
+ * to select the PIO mode by number (0,1,2,3,4,5), and a value of 255
+ * indicates that the interface driver should "auto-tune" the PIO mode
+ * according to the drive capabilities in drive->id;
+ *
+ * Not all interface types support tuning, and not all of those
+ * support all possible PIO settings.  They may silently ignore
+ * or round values as they see fit.
+ */
+typedef void (ide_tuneproc_t) (ide_drive_t *, byte);
+typedef int (ide_speedproc_t) (ide_drive_t *, byte);
+
+/*
+ * This is used to provide support for strange interfaces
+ */
+typedef void (ide_selectproc_t) (ide_drive_t *);
+typedef void (ide_resetproc_t) (ide_drive_t *);
+typedef int (ide_quirkproc_t) (ide_drive_t *);
+typedef void (ide_intrproc_t) (ide_drive_t *);
+typedef void (ide_maskproc_t) (ide_drive_t *, int);
+typedef void (ide_rw_proc_t) (ide_drive_t *, ide_dma_action_t);
+
+/*
+ * ide soft-power support
+ */
+typedef int (ide_busproc_t) (ide_drive_t *, int);
+
+#define IDE_CHIPSET_PCI_MASK   \
+    ((1<<ide_pci)|(1<<ide_cmd646)|(1<<ide_ali14xx))
+#define IDE_CHIPSET_IS_PCI(c)  ((IDE_CHIPSET_PCI_MASK >> (c)) & 1)
+
+#ifdef CONFIG_BLK_DEV_IDEPCI
+typedef struct ide_pci_devid_s {
+       unsigned short  vid;
+       unsigned short  did;
+} ide_pci_devid_t;
+
+#define IDE_PCI_DEVID_NULL     ((ide_pci_devid_t){0,0})
+#define IDE_PCI_DEVID_EQ(a,b)  (a.vid == b.vid && a.did == b.did)
+#endif /* CONFIG_BLK_DEV_IDEPCI */
+
+typedef struct hwif_s {
+       struct hwif_s   *next;          /* for linked-list in ide_hwgroup_t */
+       void            *hwgroup;       /* actually (ide_hwgroup_t *) */
+       ide_ioreg_t     io_ports[IDE_NR_PORTS]; /* task file registers */
+       hw_regs_t       hw;             /* Hardware info */
+       ide_drive_t     drives[MAX_DRIVES];     /* drive info */
+       struct gendisk  *gd;            /* gendisk structure */
+       ide_tuneproc_t  *tuneproc;      /* routine to tune PIO mode for drives */
+       ide_speedproc_t *speedproc;     /* routine to retune DMA modes for drives */
+       ide_selectproc_t *selectproc;   /* tweaks hardware to select drive */
+       ide_resetproc_t *resetproc;     /* routine to reset controller after a disk reset */
+       ide_intrproc_t  *intrproc;      /* special interrupt handling for shared pci interrupts */
+       ide_maskproc_t  *maskproc;      /* special host masking for drive selection */
+       ide_quirkproc_t *quirkproc;     /* check host's drive quirk list */
+       ide_rw_proc_t   *rwproc;        /* adjust timing based upon rq->cmd direction */
+       ide_ideproc_t   *ideproc;       /* CPU-polled transfer routine */
+       ide_dmaproc_t   *dmaproc;       /* dma read/write/abort routine */
+       unsigned int    *dmatable_cpu;  /* dma physical region descriptor table (cpu view) */
+       dma_addr_t      dmatable_dma;   /* dma physical region descriptor table (dma view) */
+       struct scatterlist *sg_table;   /* Scatter-gather list used to build the above */
+       int sg_nents;                   /* Current number of entries in it */
+       int sg_dma_direction;           /* dma transfer direction */
+       int sg_dma_active;              /* is it in use */
+       struct hwif_s   *mate;          /* other hwif from same PCI chip */
+       unsigned long   dma_base;       /* base addr for dma ports */
+       unsigned        dma_extra;      /* extra addr for dma ports */
+       unsigned long   config_data;    /* for use by chipset-specific code */
+       unsigned long   select_data;    /* for use by chipset-specific code */
+       struct proc_dir_entry *proc;    /* /proc/ide/ directory entry */
+       int             irq;            /* our irq number */
+       byte            major;          /* our major number */
+       char            name[6];        /* name of interface, eg. "ide0" */
+       byte            index;          /* 0 for ide0; 1 for ide1; ... */
+       hwif_chipset_t  chipset;        /* sub-module for tuning.. */
+       unsigned        noprobe    : 1; /* don't probe for this interface */
+       unsigned        present    : 1; /* this interface exists */
+       unsigned        serialized : 1; /* serialized operation with mate hwif */
+       unsigned        sharing_irq: 1; /* 1 = sharing irq with another hwif */
+       unsigned        reset      : 1; /* reset after probe */
+       unsigned        autodma    : 1; /* automatically try to enable DMA at boot */
+       unsigned        udma_four  : 1; /* 1=ATA-66 capable, 0=default */
+       byte            channel;        /* for dual-port chips: 0=primary, 1=secondary */
+#ifdef CONFIG_BLK_DEV_IDEPCI
+       struct pci_dev  *pci_dev;       /* for pci chipsets */
+       ide_pci_devid_t pci_devid;      /* for pci chipsets: {VID,DID} */
+#endif /* CONFIG_BLK_DEV_IDEPCI */
+#if (DISK_RECOVERY_TIME > 0)
+       unsigned long   last_time;      /* time when previous rq was done */
+#endif
+       byte            straight8;      /* Alan's straight 8 check */
+       void            *hwif_data;     /* extra hwif data */
+       ide_busproc_t   *busproc;       /* driver soft-power interface */
+       byte            bus_state;      /* power state of the IDE bus */
+} ide_hwif_t;
+
+/*
+ * Status returned from various ide_ functions
+ */
+typedef enum {
+       ide_stopped,    /* no drive operation was started */
+       ide_started     /* a drive operation was started, and a handler was set */
+} ide_startstop_t;
+
+/*
+ *  internal ide interrupt handler type
+ */
+typedef ide_startstop_t (ide_pre_handler_t)(ide_drive_t *, struct request *);
+typedef ide_startstop_t (ide_handler_t)(ide_drive_t *);
+typedef ide_startstop_t (ide_post_handler_t)(ide_drive_t *);
+
+/*
+ * when ide_timer_expiry fires, invoke a handler of this type
+ * to decide what to do.
+ */
+typedef int (ide_expiry_t)(ide_drive_t *);
+
+typedef struct hwgroup_s {
+       ide_handler_t           *handler;/* irq handler, if active */
+       volatile int            busy;   /* BOOL: protects all fields below */
+       int                     sleeping; /* BOOL: wake us up on timer expiry */
+       ide_drive_t             *drive; /* current drive */
+       ide_hwif_t              *hwif;  /* ptr to current hwif in linked-list */
+       struct request          *rq;    /* current request */
+       struct timer_list       timer;  /* failsafe timer */
+       struct request          wrq;    /* local copy of current write rq */
+       unsigned long           poll_timeout;   /* timeout value during long polls */
+       ide_expiry_t            *expiry;        /* queried upon timeouts */
+} ide_hwgroup_t;
+
+/* structure attached to the request for IDE_TASK_CMDS */
+
+/*
+ * configurable drive settings
+ */
+
+#define TYPE_INT       0
+#define TYPE_INTA      1
+#define TYPE_BYTE      2
+#define TYPE_SHORT     3
+
+#define SETTING_READ   (1 << 0)
+#define SETTING_WRITE  (1 << 1)
+#define SETTING_RW     (SETTING_READ | SETTING_WRITE)
+
+typedef int (ide_procset_t)(ide_drive_t *, int);
+typedef struct ide_settings_s {
+       char                    *name;
+       int                     rw;
+       int                     read_ioctl;
+       int                     write_ioctl;
+       int                     data_type;
+       int                     min;
+       int                     max;
+       int                     mul_factor;
+       int                     div_factor;
+       void                    *data;
+       ide_procset_t           *set;
+       int                     auto_remove;
+       struct ide_settings_s   *next;
+} ide_settings_t;
+
+void ide_add_setting(ide_drive_t *drive, const char *name, int rw, int read_ioctl, int write_ioctl, int data_type, int min, int max, int mul_factor, int div_factor, void *data, ide_procset_t *set);
+void ide_remove_setting(ide_drive_t *drive, char *name);
+ide_settings_t *ide_find_setting_by_name(ide_drive_t *drive, char *name);
+int ide_read_setting(ide_drive_t *t, ide_settings_t *setting);
+int ide_write_setting(ide_drive_t *drive, ide_settings_t *setting, int val);
+void ide_add_generic_settings(ide_drive_t *drive);
+
+#if 0
+/*
+ * /proc/ide interface
+ */
+typedef struct {
+       const char      *name;
+       mode_t          mode;
+       read_proc_t     *read_proc;
+       write_proc_t    *write_proc;
+} ide_proc_entry_t;
+#endif
+
+#ifdef CONFIG_PROC_FS
+void proc_ide_create(void);
+void proc_ide_destroy(void);
+void recreate_proc_ide_device(ide_hwif_t *, ide_drive_t *);
+void destroy_proc_ide_device(ide_hwif_t *, ide_drive_t *);
+void destroy_proc_ide_drives(ide_hwif_t *);
+void create_proc_ide_interfaces(void);
+void ide_add_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t *p, void *data);
+void ide_remove_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t *p);
+read_proc_t proc_ide_read_capacity;
+read_proc_t proc_ide_read_geometry;
+
+/*
+ * Standard exit stuff:
+ */
+#define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) \
+{                                      \
+       len -= off;                     \
+       if (len < count) {              \
+               *eof = 1;               \
+               if (len <= 0)           \
+                       return 0;       \
+       } else                          \
+               len = count;            \
+       *start = page + off;            \
+       return len;                     \
+}
+#else
+#define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) return 0;
+#endif
+
+/*
+ * Subdrivers support.
+ */
+#define IDE_SUBDRIVER_VERSION  1
+
+typedef int            (ide_cleanup_proc)(ide_drive_t *);
+typedef int            (ide_standby_proc)(ide_drive_t *);
+typedef int            (ide_flushcache_proc)(ide_drive_t *);
+typedef ide_startstop_t        (ide_do_request_proc)(ide_drive_t *, struct request *, unsigned long);
+typedef void           (ide_end_request_proc)(byte, ide_hwgroup_t *);
+typedef int            (ide_ioctl_proc)(ide_drive_t *, struct inode *, struct file *, unsigned int, unsigned long);
+typedef int            (ide_open_proc)(struct inode *, struct file *, ide_drive_t *);
+typedef void           (ide_release_proc)(struct inode *, struct file *, ide_drive_t *);
+typedef int            (ide_check_media_change_proc)(ide_drive_t *);
+typedef void           (ide_revalidate_proc)(ide_drive_t *);
+typedef void           (ide_pre_reset_proc)(ide_drive_t *);
+typedef unsigned long  (ide_capacity_proc)(ide_drive_t *);
+typedef ide_startstop_t        (ide_special_proc)(ide_drive_t *);
+typedef void           (ide_setting_proc)(ide_drive_t *);
+typedef int            (ide_reinit_proc)(ide_drive_t *);
+typedef void           (ata_prebuilder_proc)(ide_drive_t *);
+typedef void           (atapi_prebuilder_proc)(ide_drive_t *);
+
+typedef struct ide_driver_s {
+       const char                      *name;
+       const char                      *version;
+       byte                            media;
+       unsigned busy                   : 1;
+       unsigned supports_dma           : 1;
+       unsigned supports_dsc_overlap   : 1;
+       ide_cleanup_proc                *cleanup;
+       ide_standby_proc                *standby;
+       ide_flushcache_proc             *flushcache;
+       ide_do_request_proc             *do_request;
+       ide_end_request_proc            *end_request;
+       ide_ioctl_proc                  *ioctl;
+       ide_open_proc                   *open;
+       ide_release_proc                *release;
+       ide_check_media_change_proc     *media_change;
+       ide_revalidate_proc             *revalidate;
+       ide_pre_reset_proc              *pre_reset;
+       ide_capacity_proc               *capacity;
+       ide_special_proc                *special;
+    /*ide_proc_entry_t         *proc;*/
+       ide_reinit_proc                 *reinit;
+       ata_prebuilder_proc             *ata_prebuilder;
+       atapi_prebuilder_proc           *atapi_prebuilder;
+} ide_driver_t;
+
+#define DRIVER(drive)          ((ide_driver_t *)((drive)->driver))
+
+/*
+ * IDE modules.
+ */
+#define IDE_CHIPSET_MODULE             0       /* not supported yet */
+#define IDE_PROBE_MODULE               1
+#define IDE_DRIVER_MODULE              2
+
+typedef int    (ide_module_init_proc)(void);
+
+typedef struct ide_module_s {
+       int                             type;
+       ide_module_init_proc            *init;
+       void                            *info;
+       struct ide_module_s             *next;
+} ide_module_t;
+
+/*
+ * ide_hwifs[] is the master data structure used to keep track
+ * of just about everything in ide.c.  Whenever possible, routines
+ * should be using pointers to a drive (ide_drive_t *) or
+ * pointers to a hwif (ide_hwif_t *), rather than indexing this
+ * structure directly (the allocation/layout may change!).
+ *
+ */
+#ifndef _IDE_C
+extern ide_hwif_t      ide_hwifs[];            /* master data repository */
+extern ide_module_t    *ide_modules;
+extern ide_module_t    *ide_probe;
+#endif
+extern int noautodma;
+
+/*
+ * We need blk.h, but we replace its end_request by our own version.
+ */
+#define IDE_DRIVER             /* Toggle some magic bits in blk.h */
+#define LOCAL_END_REQUEST      /* Don't generate end_request in blk.h */
+#include <xen/blk.h>
+
+void ide_end_request(byte uptodate, ide_hwgroup_t *hwgroup);
+
+/*
+ * This is used for (nearly) all data transfers from/to the IDE interface
+ * FIXME for 2.5, to a pointer pass verses memcpy........
+ */
+void ide_input_data (ide_drive_t *drive, void *buffer, unsigned int wcount);
+void ide_output_data (ide_drive_t *drive, void *buffer, unsigned int wcount);
+
+/*
+ * This is used for (nearly) all ATAPI data transfers from/to the IDE interface
+ * FIXME for 2.5, to a pointer pass verses memcpy........
+ */
+void atapi_input_bytes (ide_drive_t *drive, void *buffer, unsigned int bytecount);
+void atapi_output_bytes (ide_drive_t *drive, void *buffer, unsigned int bytecount);
+
+int drive_is_ready (ide_drive_t *drive);
+
+/*
+ * This is used on exit from the driver, to designate the next irq handler
+ * and also to start the safety timer.
+ */
+void ide_set_handler (ide_drive_t *drive, ide_handler_t *handler, unsigned int timeout, ide_expiry_t *expiry);
+
+/*
+ * Error reporting, in human readable form (luxurious, but a memory hog).
+ */
+byte ide_dump_status (ide_drive_t *drive, const char *msg, byte stat);
+
+/*
+ * ide_error() takes action based on the error returned by the controller.
+ * The caller should return immediately after invoking this.
+ */
+ide_startstop_t ide_error (ide_drive_t *drive, const char *msg, byte stat);
+
+/*
+ * Issue a simple drive command
+ * The drive must be selected beforehand.
+ */
+void ide_cmd (ide_drive_t *drive, byte cmd, byte nsect, ide_handler_t *handler);
+
+/*
+ * ide_fixstring() cleans up and (optionally) byte-swaps a text string,
+ * removing leading/trailing blanks and compressing internal blanks.
+ * It is primarily used to tidy up the model name/number fields as
+ * returned by the WIN_[P]IDENTIFY commands.
+ */
+void ide_fixstring (byte *s, const int bytecount, const int byteswap);
+
+/*
+ * This routine busy-waits for the drive status to be not "busy".
+ * It then checks the status for all of the "good" bits and none
+ * of the "bad" bits, and if all is okay it returns 0.  All other
+ * cases return 1 after doing "*startstop = ide_error()", and the
+ * caller should return the updated value of "startstop" in this case.
+ * "startstop" is unchanged when the function returns 0;
+ */
+int ide_wait_stat (ide_startstop_t *startstop, ide_drive_t *drive, byte good, byte bad, unsigned long timeout);
+
+int ide_wait_noerr (ide_drive_t *drive, byte good, byte bad, unsigned long timeout);
+
+/*
+ * This routine is called from the partition-table code in genhd.c
+ * to "convert" a drive to a logical geometry with fewer than 1024 cyls.
+ */
+int ide_xlate_1024 (kdev_t, int, int, const char *);
+
+/*
+ * Convert kdev_t structure into ide_drive_t * one.
+ */
+ide_drive_t *get_info_ptr (kdev_t i_rdev);
+
+/*
+ * Return the current idea about the total capacity of this drive.
+ */
+unsigned long current_capacity (ide_drive_t *drive);
+
+/*
+ * Start a reset operation for an IDE interface.
+ * The caller should return immediately after invoking this.
+ */
+ide_startstop_t ide_do_reset (ide_drive_t *);
+
+/*
+ * Re-Start an operation for an IDE interface.
+ * The caller should return immediately after invoking this.
+ */
+ide_startstop_t restart_request (ide_drive_t *);
+
+/*
+ * This function is intended to be used prior to invoking ide_do_drive_cmd().
+ */
+void ide_init_drive_cmd (struct request *rq);
+
+/*
+ * "action" parameter type for ide_do_drive_cmd() below.
+ */
+typedef enum {
+       ide_wait,       /* insert rq at end of list, and wait for it */
+       ide_next,       /* insert rq immediately after current request */
+       ide_preempt,    /* insert rq in front of current request */
+       ide_end         /* insert rq at end of list, but don't wait for it */
+} ide_action_t;
+
+/*
+ * This function issues a special IDE device request
+ * onto the request queue.
+ *
+ * If action is ide_wait, then the rq is queued at the end of the
+ * request queue, and the function sleeps until it has been processed.
+ * This is for use when invoked from an ioctl handler.
+ *
+ * If action is ide_preempt, then the rq is queued at the head of
+ * the request queue, displacing the currently-being-processed
+ * request and this function returns immediately without waiting
+ * for the new rq to be completed.  This is VERY DANGEROUS, and is
+ * intended for careful use by the ATAPI tape/cdrom driver code.
+ *
+ * If action is ide_next, then the rq is queued immediately after
+ * the currently-being-processed-request (if any), and the function
+ * returns without waiting for the new rq to be completed.  As above,
+ * This is VERY DANGEROUS, and is intended for careful use by the
+ * ATAPI tape/cdrom driver code.
+ *
+ * If action is ide_end, then the rq is queued at the end of the
+ * request queue, and the function returns immediately without waiting
+ * for the new rq to be completed. This is again intended for careful
+ * use by the ATAPI tape/cdrom driver code.
+ */
+int ide_do_drive_cmd (ide_drive_t *drive, struct request *rq, ide_action_t action);
+
+/*
+ * Clean up after success/failure of an explicit drive cmd.
+ * stat/err are used only when (HWGROUP(drive)->rq->cmd == IDE_DRIVE_CMD).
+ * stat/err are used only when (HWGROUP(drive)->rq->cmd == IDE_DRIVE_TASK_MASK).
+ */
+void ide_end_drive_cmd (ide_drive_t *drive, byte stat, byte err);
+
+/*
+ * Issue ATA command and wait for completion. use for implementing commands in kernel
+ */
+int ide_wait_cmd (ide_drive_t *drive, int cmd, int nsect, int feature, int sectors, byte *buf);
+
+int ide_wait_cmd_task (ide_drive_t *drive, byte *buf);
+typedef struct ide_task_s {
+       task_ioreg_t            tfRegister[8];
+       task_ioreg_t            hobRegister[8];
+       ide_reg_valid_t         tf_out_flags;
+       ide_reg_valid_t         tf_in_flags;
+       int                     data_phase;
+       int                     command_type;
+       ide_pre_handler_t       *prehandler;
+       ide_handler_t           *handler;
+       ide_post_handler_t      *posthandler;
+       void                    *special;       /* valid_t generally */
+       struct request          *rq;            /* copy of request */
+       unsigned long           block;          /* copy of block */
+} ide_task_t;
+
+typedef struct pkt_task_s {
+       task_ioreg_t            tfRegister[8];
+       int                     data_phase;
+       int                     command_type;
+       ide_handler_t           *handler;
+       void                    *special;
+       struct request          *rq;            /* copy of request */
+       unsigned long           block;          /* copy of block */
+} pkt_task_t;
+
+/*
+ * taskfile io for disks for now...
+ */
+ide_startstop_t do_rw_taskfile (ide_drive_t *drive, ide_task_t *task);
+
+/*
+ * Builds request from ide_ioctl
+ */
+void do_taskfile (ide_drive_t *drive, struct hd_drive_task_hdr *taskfile, struct hd_drive_hob_hdr *hobfile, ide_handler_t *handler);
+
+/*
+ * Special Flagged Register Validation Caller
+ */
+// ide_startstop_t flagged_taskfile (ide_drive_t *drive, ide_task_t *task);
+
+ide_startstop_t set_multmode_intr (ide_drive_t *drive);
+ide_startstop_t set_geometry_intr (ide_drive_t *drive);
+ide_startstop_t recal_intr (ide_drive_t *drive);
+ide_startstop_t task_no_data_intr (ide_drive_t *drive);
+ide_startstop_t task_in_intr (ide_drive_t *drive);
+ide_startstop_t task_mulin_intr (ide_drive_t *drive);
+ide_startstop_t pre_task_out_intr (ide_drive_t *drive, struct request *rq);
+ide_startstop_t task_out_intr (ide_drive_t *drive);
+ide_startstop_t task_mulout_intr (ide_drive_t *drive);
+void ide_init_drive_taskfile (struct request *rq);
+
+int ide_wait_taskfile (ide_drive_t *drive, struct hd_drive_task_hdr *taskfile, struct hd_drive_hob_hdr *hobfile, byte *buf);
+
+int ide_raw_taskfile (ide_drive_t *drive, ide_task_t *cmd, byte *buf);
+
+ide_pre_handler_t * ide_pre_handler_parser (struct hd_drive_task_hdr *taskfile, struct hd_drive_hob_hdr *hobfile);
+ide_handler_t * ide_handler_parser (struct hd_drive_task_hdr *taskfile, struct hd_drive_hob_hdr *hobfile);
+/* Expects args is a full set of TF registers and parses the command type */
+int ide_cmd_type_parser (ide_task_t *args);
+
+int ide_taskfile_ioctl (ide_drive_t *drive, struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);
+
+#ifdef CONFIG_PKT_TASK_IOCTL
+int pkt_taskfile_ioctl (ide_drive_t *drive, struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);
+#endif /* CONFIG_PKT_TASK_IOCTL */
+
+void ide_delay_50ms (void);
+int system_bus_clock(void);
+
+byte ide_auto_reduce_xfer (ide_drive_t *drive);
+int ide_driveid_update (ide_drive_t *drive);
+int ide_ata66_check (ide_drive_t *drive, ide_task_t *args);
+int ide_config_drive_speed (ide_drive_t *drive, byte speed);
+byte eighty_ninty_three (ide_drive_t *drive);
+int set_transfer (ide_drive_t *drive, ide_task_t *args);
+
+/*
+ * ide_system_bus_speed() returns what we think is the system VESA/PCI
+ * bus speed (in MHz).  This is used for calculating interface PIO timings.
+ * The default is 40 for known PCI systems, 50 otherwise.
+ * The "idebus=xx" parameter can be used to override this value.
+ */
+int ide_system_bus_speed (void);
+
+/*
+ * ide_multwrite() transfers a block of up to mcount sectors of data
+ * to a drive as part of a disk multwrite operation.
+ */
+int ide_multwrite (ide_drive_t *drive, unsigned int mcount);
+
+/*
+ * ide_stall_queue() can be used by a drive to give excess bandwidth back
+ * to the hwgroup by sleeping for timeout jiffies.
+ */
+void ide_stall_queue (ide_drive_t *drive, unsigned long timeout);
+
+/*
+ * ide_get_queue() returns the queue which corresponds to a given device.
+ */
+request_queue_t *ide_get_queue (kdev_t dev);
+
+/*
+ * CompactFlash cards and their brethern pretend to be removable hard disks,
+ * but they never have a slave unit, and they don't have doorlock mechanisms.
+ * This test catches them, and is invoked elsewhere when setting appropriate config bits.
+ */
+int drive_is_flashcard (ide_drive_t *drive);
+
+int ide_spin_wait_hwgroup (ide_drive_t *drive);
+void ide_timer_expiry (unsigned long data);
+void ide_intr (int irq, void *dev_id, struct pt_regs *regs);
+void do_ide_request (request_queue_t * q);
+void ide_init_subdrivers (void);
+
+#ifndef _IDE_C
+extern struct block_device_operations ide_fops[];
+/*extern ide_proc_entry_t generic_subdriver_entries[];*/
+#endif
+
+int ide_reinit_drive (ide_drive_t *drive);
+
+#ifdef _IDE_C
+#ifdef CONFIG_BLK_DEV_IDE
+int ideprobe_init (void);
+#endif /* CONFIG_BLK_DEV_IDE */
+#ifdef CONFIG_BLK_DEV_IDEDISK
+int idedisk_reinit (ide_drive_t *drive);
+int idedisk_init (void);
+#endif /* CONFIG_BLK_DEV_IDEDISK */
+#ifdef CONFIG_BLK_DEV_IDECD
+int ide_cdrom_reinit (ide_drive_t *drive);
+int ide_cdrom_init (void);
+#endif /* CONFIG_BLK_DEV_IDECD */
+#ifdef CONFIG_BLK_DEV_IDETAPE
+int idetape_reinit (ide_drive_t *drive);
+int idetape_init (void);
+#endif /* CONFIG_BLK_DEV_IDETAPE */
+#ifdef CONFIG_BLK_DEV_IDEFLOPPY
+int idefloppy_reinit (ide_drive_t *drive);
+int idefloppy_init (void);
+#endif /* CONFIG_BLK_DEV_IDEFLOPPY */
+#ifdef CONFIG_BLK_DEV_IDESCSI
+int idescsi_reinit (ide_drive_t *drive);
+int idescsi_init (void);
+#endif /* CONFIG_BLK_DEV_IDESCSI */
+#endif /* _IDE_C */
+
+int ide_register_module (ide_module_t *module);
+void ide_unregister_module (ide_module_t *module);
+ide_drive_t *ide_scan_devices (byte media, const char *name, ide_driver_t *driver, int n);
+int ide_register_subdriver (ide_drive_t *drive, ide_driver_t *driver, int version);
+int ide_unregister_subdriver (ide_drive_t *drive);
+int ide_replace_subdriver(ide_drive_t *drive, const char *driver);
+
+#ifdef CONFIG_BLK_DEV_IDEPCI
+#define ON_BOARD               1
+#define NEVER_BOARD            0
+#ifdef CONFIG_BLK_DEV_OFFBOARD
+#  define OFF_BOARD            ON_BOARD
+#else /* CONFIG_BLK_DEV_OFFBOARD */
+#  define OFF_BOARD            NEVER_BOARD
+#endif /* CONFIG_BLK_DEV_OFFBOARD */
+
+unsigned long ide_find_free_region (unsigned short size) __init;
+void ide_scan_pcibus (int scan_direction) __init;
+#endif
+#ifdef CONFIG_BLK_DEV_IDEDMA
+#define BAD_DMA_DRIVE          0
+#define GOOD_DMA_DRIVE         1
+int ide_build_dmatable (ide_drive_t *drive, ide_dma_action_t func);
+void ide_destroy_dmatable (ide_drive_t *drive);
+ide_startstop_t ide_dma_intr (ide_drive_t *drive);
+int check_drive_lists (ide_drive_t *drive, int good_bad);
+int report_drive_dmaing (ide_drive_t *drive);
+int ide_dmaproc (ide_dma_action_t func, ide_drive_t *drive);
+int ide_release_dma (ide_hwif_t *hwif);
+void ide_setup_dma (ide_hwif_t *hwif, unsigned long dmabase, unsigned int num_ports) __init;
+unsigned long ide_get_or_set_dma_base (ide_hwif_t *hwif, int extra, const char *name) __init;
+#endif
+
+void hwif_unregister (ide_hwif_t *hwif);
+
+void export_ide_init_queue (ide_drive_t *drive);
+byte export_probe_for_drive (ide_drive_t *drive);
+
+#endif /* _IDE_H */
diff --git a/xen/include/xen/if.h b/xen/include/xen/if.h
new file mode 100644 (file)
index 0000000..a23bbea
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Global definitions for the INET interface module.
+ *
+ * Version:    @(#)if.h        1.0.2   04/18/93
+ *
+ * Authors:    Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988
+ *             Ross Biro, <bir7@leland.Stanford.Edu>
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_IF_H
+#define _LINUX_IF_H
+
+#include <xen/types.h>         /* for "__kernel_caddr_t" et al */
+#include <xen/socket.h>                /* for "struct sockaddr" et al  */
+
+/* Standard interface flags (netdevice->flags). */
+#define        IFF_UP          0x1             /* interface is up              */
+#define        IFF_BROADCAST   0x2             /* broadcast address valid      */
+#define        IFF_DEBUG       0x4             /* turn on debugging            */
+#define        IFF_LOOPBACK    0x8             /* is a loopback net            */
+#define        IFF_POINTOPOINT 0x10            /* interface is has p-p link    */
+#define        IFF_NOTRAILERS  0x20            /* avoid use of trailers        */
+#define        IFF_RUNNING     0x40            /* resources allocated          */
+#define        IFF_NOARP       0x80            /* no ARP protocol              */
+#define        IFF_PROMISC     0x100           /* receive all packets          */
+#define        IFF_ALLMULTI    0x200           /* receive all multicast packets*/
+
+#define IFF_MASTER     0x400           /* master of a load balancer    */
+#define IFF_SLAVE      0x800           /* slave of a load balancer     */
+
+#define IFF_MULTICAST  0x1000          /* Supports multicast           */
+
+#define IFF_VOLATILE   (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_MASTER|IFF_SLAVE|IFF_RUNNING)
+
+#define IFF_PORTSEL    0x2000          /* can set media type           */
+#define IFF_AUTOMEDIA  0x4000          /* auto media select active     */
+#define IFF_DYNAMIC    0x8000          /* dialup device with changing addresses*/
+
+/* Private (from user) interface flags (netdevice->priv_flags). */
+#define IFF_802_1Q_VLAN 0x1             /* 802.1Q VLAN device.          */
+
+/*
+ *     Device mapping structure. I'd just gone off and designed a 
+ *     beautiful scheme using only loadable modules with arguments
+ *     for driver options and along come the PCMCIA people 8)
+ *
+ *     Ah well. The get() side of this is good for WDSETUP, and it'll
+ *     be handy for debugging things. The set side is fine for now and
+ *     being very small might be worth keeping for clean configuration.
+ */
+
+struct ifmap 
+{
+       unsigned long mem_start;
+       unsigned long mem_end;
+       unsigned short base_addr; 
+       unsigned char irq;
+       unsigned char dma;
+       unsigned char port;
+       /* 3 bytes spare */
+};
+
+/*`
+ * Interface request structure used for socket
+ * ioctl's.  All interface ioctl's must have parameter
+ * definitions which begin with ifr_name.  The
+ * remainder may be interface specific.
+ */
+
+struct ifreq 
+{
+#define IFHWADDRLEN    6
+#define        IFNAMSIZ        16
+       union
+       {
+               char    ifrn_name[IFNAMSIZ];            /* if name, e.g. "en0" */
+       } ifr_ifrn;
+       
+       union {
+               struct  sockaddr ifru_addr;
+               struct  sockaddr ifru_dstaddr;
+               struct  sockaddr ifru_broadaddr;
+               struct  sockaddr ifru_netmask;
+               struct  sockaddr ifru_hwaddr;
+               short   ifru_flags;
+               int     ifru_ivalue;
+               int     ifru_mtu;
+               struct  ifmap ifru_map;
+               char    ifru_slave[IFNAMSIZ];   /* Just fits the size */
+               char    ifru_newname[IFNAMSIZ];
+               char *  ifru_data;
+       } ifr_ifru;
+};
+
+#define ifr_name       ifr_ifrn.ifrn_name      /* interface name       */
+#define ifr_hwaddr     ifr_ifru.ifru_hwaddr    /* MAC address          */
+#define        ifr_addr        ifr_ifru.ifru_addr      /* address              */
+#define        ifr_dstaddr     ifr_ifru.ifru_dstaddr   /* other end of p-p lnk */
+#define        ifr_broadaddr   ifr_ifru.ifru_broadaddr /* broadcast address    */
+#define        ifr_netmask     ifr_ifru.ifru_netmask   /* interface net mask   */
+#define        ifr_flags       ifr_ifru.ifru_flags     /* flags                */
+#define        ifr_metric      ifr_ifru.ifru_ivalue    /* metric               */
+#define        ifr_mtu         ifr_ifru.ifru_mtu       /* mtu                  */
+#define ifr_map                ifr_ifru.ifru_map       /* device map           */
+#define ifr_slave      ifr_ifru.ifru_slave     /* slave device         */
+#define        ifr_data        ifr_ifru.ifru_data      /* for use by interface */
+#define ifr_ifindex    ifr_ifru.ifru_ivalue    /* interface index      */
+#define ifr_bandwidth  ifr_ifru.ifru_ivalue    /* link bandwidth       */
+#define ifr_qlen       ifr_ifru.ifru_ivalue    /* Queue length         */
+#define ifr_newname    ifr_ifru.ifru_newname   /* New name             */
+
+/*
+ * Structure used in SIOCGIFCONF request.
+ * Used to retrieve interface configuration
+ * for machine (useful for programs which
+ * must know all networks accessible).
+ */
+
+struct ifconf 
+{
+       int     ifc_len;                        /* size of buffer       */
+       union 
+       {
+               char *                  ifcu_buf;
+               struct  ifreq           *ifcu_req;
+       } ifc_ifcu;
+};
+#define        ifc_buf ifc_ifcu.ifcu_buf               /* buffer address       */
+#define        ifc_req ifc_ifcu.ifcu_req               /* array of structures  */
+
+
+#endif /* _LINUX_IF_H */
diff --git a/xen/include/xen/if_ether.h b/xen/include/xen/if_ether.h
new file mode 100644 (file)
index 0000000..b64559d
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Global definitions for the Ethernet IEEE 802.3 interface.
+ *
+ * Version:    @(#)if_ether.h  1.0.1a  02/08/94
+ *
+ * Author:     Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *             Donald Becker, <becker@super.org>
+ *             Alan Cox, <alan@redhat.com>
+ *             Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_IF_ETHER_H
+#define _LINUX_IF_ETHER_H
+
+/*
+ *     IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
+ *     and FCS/CRC (frame check sequence). 
+ */
+
+#define ETH_ALEN       6               /* Octets in one ethernet addr   */
+#define ETH_HLEN       14              /* Total octets in header.       */
+#define ETH_ZLEN       60              /* Min. octets in frame sans FCS */
+#define ETH_DATA_LEN   1500            /* Max. octets in payload        */
+#define ETH_FRAME_LEN  1514            /* Max. octets in frame sans FCS */
+
+/*
+ *     These are the defined Ethernet Protocol ID's.
+ */
+
+#define ETH_P_LOOP     0x0060          /* Ethernet Loopback packet     */
+#define ETH_P_PUP      0x0200          /* Xerox PUP packet             */
+#define ETH_P_PUPAT    0x0201          /* Xerox PUP Addr Trans packet  */
+#define ETH_P_IP       0x0800          /* Internet Protocol packet     */
+#define ETH_P_X25      0x0805          /* CCITT X.25                   */
+#define ETH_P_ARP      0x0806          /* Address Resolution packet    */
+#define        ETH_P_BPQ       0x08FF          /* G8BPQ AX.25 Ethernet Packet  [ NOT AN OFFICIALLY REGISTERED ID ] */
+#define ETH_P_IEEEPUP  0x0a00          /* Xerox IEEE802.3 PUP packet */
+#define ETH_P_IEEEPUPAT        0x0a01          /* Xerox IEEE802.3 PUP Addr Trans packet */
+#define ETH_P_DEC       0x6000          /* DEC Assigned proto           */
+#define ETH_P_DNA_DL    0x6001          /* DEC DNA Dump/Load            */
+#define ETH_P_DNA_RC    0x6002          /* DEC DNA Remote Console       */
+#define ETH_P_DNA_RT    0x6003          /* DEC DNA Routing              */
+#define ETH_P_LAT       0x6004          /* DEC LAT                      */
+#define ETH_P_DIAG      0x6005          /* DEC Diagnostics              */
+#define ETH_P_CUST      0x6006          /* DEC Customer use             */
+#define ETH_P_SCA       0x6007          /* DEC Systems Comms Arch       */
+#define ETH_P_RARP      0x8035         /* Reverse Addr Res packet      */
+#define ETH_P_ATALK    0x809B          /* Appletalk DDP                */
+#define ETH_P_AARP     0x80F3          /* Appletalk AARP               */
+#define ETH_P_8021Q    0x8100          /* 802.1Q VLAN Extended Header  */
+#define ETH_P_IPX      0x8137          /* IPX over DIX                 */
+#define ETH_P_IPV6     0x86DD          /* IPv6 over bluebook           */
+#define ETH_P_PPP_DISC 0x8863          /* PPPoE discovery messages     */
+#define ETH_P_PPP_SES  0x8864          /* PPPoE session messages       */
+#define ETH_P_ATMMPOA  0x884c          /* MultiProtocol Over ATM       */
+#define ETH_P_ATMFATE  0x8884          /* Frame-based ATM Transport
+                                        * over Ethernet
+                                        */
+
+/*
+ *     Non DIX types. Won't clash for 1500 types.
+ */
+#define ETH_P_802_3    0x0001          /* Dummy type for 802.3 frames  */
+#define ETH_P_AX25     0x0002          /* Dummy protocol id for AX.25  */
+#define ETH_P_ALL      0x0003          /* Every packet (be careful!!!) */
+#define ETH_P_802_2    0x0004          /* 802.2 frames                 */
+#define ETH_P_SNAP     0x0005          /* Internal only                */
+#define ETH_P_DDCMP     0x0006          /* DEC DDCMP: Internal only     */
+#define ETH_P_WAN_PPP   0x0007          /* Dummy type for WAN PPP frames*/
+#define ETH_P_PPP_MP    0x0008          /* Dummy type for PPP MP frames */
+#define ETH_P_LOCALTALK 0x0009         /* Localtalk pseudo type        */
+#define ETH_P_PPPTALK  0x0010          /* Dummy type for Atalk over PPP*/
+#define ETH_P_TR_802_2 0x0011          /* 802.2 frames                 */
+#define ETH_P_MOBITEX  0x0015          /* Mobitex (kaz@cafe.net)       */
+#define ETH_P_CONTROL  0x0016          /* Card specific control frames */
+#define ETH_P_IRDA     0x0017          /* Linux-IrDA                   */
+#define ETH_P_ECONET   0x0018          /* Acorn Econet                 */
+
+/*
+ *     This is an Ethernet frame header.
+ */
+struct ethhdr 
+{
+       unsigned char   h_dest[ETH_ALEN];       /* destination eth addr */
+       unsigned char   h_source[ETH_ALEN];     /* source ether addr    */
+       unsigned short  h_proto;                /* packet type ID field */
+};
+
+#endif /* _LINUX_IF_ETHER_H */
diff --git a/xen/include/xen/if_packet.h b/xen/include/xen/if_packet.h
new file mode 100644 (file)
index 0000000..b925585
--- /dev/null
@@ -0,0 +1,102 @@
+#ifndef __LINUX_IF_PACKET_H
+#define __LINUX_IF_PACKET_H
+
+struct sockaddr_pkt
+{
+       unsigned short spkt_family;
+       unsigned char spkt_device[14];
+       unsigned short spkt_protocol;
+};
+
+struct sockaddr_ll
+{
+       unsigned short  sll_family;
+       unsigned short  sll_protocol;
+       int             sll_ifindex;
+       unsigned short  sll_hatype;
+       unsigned char   sll_pkttype;
+       unsigned char   sll_halen;
+       unsigned char   sll_addr[8];
+};
+
+/* Packet types */
+
+#define PACKET_HOST            0               /* To us                */
+#define PACKET_BROADCAST       1               /* To all               */
+#define PACKET_MULTICAST       2               /* To group             */
+#define PACKET_OTHERHOST       3               /* To someone else      */
+#define PACKET_OUTGOING                4               /* Outgoing of any type */
+/* These ones are invisible by user level */
+#define PACKET_LOOPBACK                5               /* MC/BRD frame looped back */
+#define PACKET_FASTROUTE       6               /* Fastrouted frame     */
+
+/* Packet socket options */
+
+#define PACKET_ADD_MEMBERSHIP          1
+#define PACKET_DROP_MEMBERSHIP         2
+#define PACKET_RECV_OUTPUT             3
+/* Value 4 is still used by obsolete turbo-packet. */
+#define PACKET_RX_RING                 5
+#define PACKET_STATISTICS              6
+#define PACKET_COPY_THRESH             7
+
+struct tpacket_stats
+{
+       unsigned int    tp_packets;
+       unsigned int    tp_drops;
+};
+
+struct tpacket_hdr
+{
+       unsigned long   tp_status;
+#define TP_STATUS_KERNEL       0
+#define TP_STATUS_USER         1
+#define TP_STATUS_COPY         2
+#define TP_STATUS_LOSING       4
+#define TP_STATUS_CSUMNOTREADY 8
+       unsigned int    tp_len;
+       unsigned int    tp_snaplen;
+       unsigned short  tp_mac;
+       unsigned short  tp_net;
+       unsigned int    tp_sec;
+       unsigned int    tp_usec;
+};
+
+#define TPACKET_ALIGNMENT      16
+#define TPACKET_ALIGN(x)       (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
+#define TPACKET_HDRLEN         (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
+
+/*
+   Frame structure:
+
+   - Start. Frame must be aligned to TPACKET_ALIGNMENT=16
+   - struct tpacket_hdr
+   - pad to TPACKET_ALIGNMENT=16
+   - struct sockaddr_ll
+   - Gap, chosen so that packet data (Start+tp_net) alignes to TPACKET_ALIGNMENT=16
+   - Start+tp_mac: [ Optional MAC header ]
+   - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16.
+   - Pad to align to TPACKET_ALIGNMENT=16
+ */
+
+struct tpacket_req
+{
+       unsigned int    tp_block_size;  /* Minimal size of contiguous block */
+       unsigned int    tp_block_nr;    /* Number of blocks */
+       unsigned int    tp_frame_size;  /* Size of frame */
+       unsigned int    tp_frame_nr;    /* Total number of frames */
+};
+
+struct packet_mreq
+{
+       int             mr_ifindex;
+       unsigned short  mr_type;
+       unsigned short  mr_alen;
+       unsigned char   mr_address[8];
+};
+
+#define PACKET_MR_MULTICAST    0
+#define PACKET_MR_PROMISC      1
+#define PACKET_MR_ALLMULTI     2
+
+#endif
diff --git a/xen/include/xen/if_vlan.h b/xen/include/xen/if_vlan.h
new file mode 100644 (file)
index 0000000..562e7b2
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+ * VLAN                An implementation of 802.1Q VLAN tagging.
+ *
+ * Authors:    Ben Greear <greearb@candelatech.com>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ *
+ */
+
+#ifndef _LINUX_IF_VLAN_H_
+#define _LINUX_IF_VLAN_H_
+
+#ifdef __KERNEL__
+
+/* externally defined structs */
+struct vlan_group;
+struct net_device;
+struct sk_buff;
+struct packet_type;
+struct vlan_collection;
+struct vlan_dev_info;
+
+//#include <xen/proc_fs.h> /* for proc_dir_entry */
+#include <xen/netdevice.h>
+
+#define VLAN_HLEN      4               /* The additional bytes (on top of the Ethernet header)
+                                        * that VLAN requires.
+                                        */
+#define VLAN_ETH_ALEN  6               /* Octets in one ethernet addr   */
+#define VLAN_ETH_HLEN  18              /* Total octets in header.       */
+#define VLAN_ETH_ZLEN  64              /* Min. octets in frame sans FCS */
+
+/*
+ * According to 802.3ac, the packet can be 4 bytes longer. --Klika Jan
+ */
+#define VLAN_ETH_DATA_LEN      1500    /* Max. octets in payload        */
+#define VLAN_ETH_FRAME_LEN     1518    /* Max. octets in frame sans FCS */
+
+struct vlan_ethhdr {
+   unsigned char       h_dest[ETH_ALEN];          /* destination eth addr      */
+   unsigned char       h_source[ETH_ALEN];        /* source ether addr */
+   unsigned short       h_vlan_proto;              /* Should always be 0x8100 */
+   unsigned short       h_vlan_TCI;                /* Encapsulates priority and VLAN ID */
+   unsigned short      h_vlan_encapsulated_proto; /* packet type ID field (or len) */
+};
+
+struct vlan_hdr {
+   unsigned short       h_vlan_TCI;                /* Encapsulates priority and VLAN ID */
+   unsigned short       h_vlan_encapsulated_proto; /* packet type ID field (or len) */
+};
+
+#define VLAN_VID_MASK  0xfff
+
+/* found in af_inet.c */
+extern int (*vlan_ioctl_hook)(unsigned long arg);
+
+#define VLAN_NAME "vlan"
+
+/* if this changes, algorithm will have to be reworked because this
+ * depends on completely exhausting the VLAN identifier space.  Thus
+ * it gives constant time look-up, but in many cases it wastes memory.
+ */
+#define VLAN_GROUP_ARRAY_LEN 4096
+
+struct vlan_group {
+       int real_dev_ifindex; /* The ifindex of the ethernet(like) device the vlan is attached to. */
+       struct net_device *vlan_devices[VLAN_GROUP_ARRAY_LEN];
+
+       struct vlan_group *next; /* the next in the list */
+};
+
+struct vlan_priority_tci_mapping {
+       unsigned long priority;
+       unsigned short vlan_qos; /* This should be shifted when first set, so we only do it
+                                 * at provisioning time.
+                                 * ((skb->priority << 13) & 0xE000)
+                                 */
+       struct vlan_priority_tci_mapping *next;
+};
+
+/* Holds information that makes sense if this device is a VLAN device. */
+struct vlan_dev_info {
+       /** This will be the mapping that correlates skb->priority to
+        * 3 bits of VLAN QOS tags...
+        */
+       unsigned long ingress_priority_map[8];
+       struct vlan_priority_tci_mapping *egress_priority_map[16]; /* hash table */
+
+       unsigned short vlan_id;        /*  The VLAN Identifier for this interface. */
+       unsigned short flags;          /* (1 << 0) re_order_header   This option will cause the
+                                        *   VLAN code to move around the ethernet header on
+                                        *   ingress to make the skb look **exactly** like it
+                                        *   came in from an ethernet port.  This destroys some of
+                                        *   the VLAN information in the skb, but it fixes programs
+                                        *   like DHCP that use packet-filtering and don't understand
+                                        *   802.1Q
+                                        */
+       struct dev_mc_list *old_mc_list;  /* old multi-cast list for the VLAN interface..
+                                           * we save this so we can tell what changes were
+                                           * made, in order to feed the right changes down
+                                           * to the real hardware...
+                                           */
+       int old_allmulti;               /* similar to above. */
+       int old_promiscuity;            /* similar to above. */
+       struct net_device *real_dev;    /* the underlying device/interface */
+       struct proc_dir_entry *dent;    /* Holds the proc data */
+       unsigned long cnt_inc_headroom_on_tx; /* How many times did we have to grow the skb on TX. */
+       unsigned long cnt_encap_on_xmit;      /* How many times did we have to encapsulate the skb on TX. */
+       struct net_device_stats dev_stats; /* Device stats (rx-bytes, tx-pkts, etc...) */
+};
+
+#define VLAN_DEV_INFO(x) ((struct vlan_dev_info *)(x->priv))
+
+/* inline functions */
+
+static inline struct net_device_stats *vlan_dev_get_stats(struct net_device *dev)
+{
+       return &(VLAN_DEV_INFO(dev)->dev_stats);
+}
+
+static inline __u32 vlan_get_ingress_priority(struct net_device *dev,
+                                             unsigned short vlan_tag)
+{
+       struct vlan_dev_info *vip = VLAN_DEV_INFO(dev);
+
+       return vip->ingress_priority_map[(vlan_tag >> 13) & 0x7];
+}
+
+/* VLAN tx hw acceleration helpers. */
+struct vlan_skb_tx_cookie {
+       u32     magic;
+       u32     vlan_tag;
+};
+
+#if 0
+#define VLAN_TX_COOKIE_MAGIC   0x564c414e      /* "VLAN" in ascii. */
+#define VLAN_TX_SKB_CB(__skb)  ((struct vlan_skb_tx_cookie *)&((__skb)->cb[0]))
+#define vlan_tx_tag_present(__skb) \
+       (VLAN_TX_SKB_CB(__skb)->magic == VLAN_TX_COOKIE_MAGIC)
+#define vlan_tx_tag_get(__skb) (VLAN_TX_SKB_CB(__skb)->vlan_tag)
+#else /* XXX KAF: We don't support vlan tagging at the moment. */
+#define VLAN_TX_SKB_CB(__skb)     NULL
+#define vlan_tx_tag_present(__skb) 0
+#define vlan_tx_tag_get(__skb)    0
+#endif
+
+#if 0
+/* VLAN rx hw acceleration helper.  This acts like netif_{rx,receive_skb}(). */
+static inline int __vlan_hwaccel_rx(struct sk_buff *skb,
+                                   struct vlan_group *grp,
+                                   unsigned short vlan_tag, int polling)
+{
+       struct net_device_stats *stats;
+
+       skb->dev = grp->vlan_devices[vlan_tag & VLAN_VID_MASK];
+       if (skb->dev == NULL) {
+               kfree_skb(skb);
+
+               /* Not NET_RX_DROP, this is not being dropped
+                * due to congestion.
+                */
+               return 0;
+       }
+
+       skb->dev->last_rx = jiffies;
+
+       stats = vlan_dev_get_stats(skb->dev);
+       stats->rx_packets++;
+       stats->rx_bytes += skb->len;
+
+       skb->priority = vlan_get_ingress_priority(skb->dev, vlan_tag);
+       switch (skb->pkt_type) {
+       case PACKET_BROADCAST:
+               break;
+
+       case PACKET_MULTICAST:
+               stats->multicast++;
+               break;
+
+       case PACKET_OTHERHOST:
+               /* Our lower layer thinks this is not local, let's make sure.
+                * This allows the VLAN to have a different MAC than the underlying
+                * device, and still route correctly.
+                */
+               if (!memcmp(skb->mac.ethernet->h_dest, skb->dev->dev_addr, ETH_ALEN))
+                       skb->pkt_type = PACKET_HOST;
+               break;
+       };
+
+#ifdef NAPI
+       return (polling ? netif_receive_skb(skb) : netif_rx(skb));
+#else
+        return netif_rx(skb);
+#endif
+}
+
+static inline int vlan_hwaccel_rx(struct sk_buff *skb,
+                                 struct vlan_group *grp,
+                                 unsigned short vlan_tag)
+{
+       return __vlan_hwaccel_rx(skb, grp, vlan_tag, 0);
+}
+
+static inline int vlan_hwaccel_receive_skb(struct sk_buff *skb,
+                                          struct vlan_group *grp,
+                                          unsigned short vlan_tag)
+{
+       return __vlan_hwaccel_rx(skb, grp, vlan_tag, 1);
+}
+#else
+#define vlan_hwaccel_rx(_skb, _grp, _tag) (netif_rx(_skb))
+#endif
+#endif /* __KERNEL__ */
+
+/* VLAN IOCTLs are found in sockios.h */
+
+/* Passed in vlan_ioctl_args structure to determine behaviour. */
+enum vlan_ioctl_cmds {
+       ADD_VLAN_CMD,
+       DEL_VLAN_CMD,
+       SET_VLAN_INGRESS_PRIORITY_CMD,
+       SET_VLAN_EGRESS_PRIORITY_CMD,
+       GET_VLAN_INGRESS_PRIORITY_CMD,
+       GET_VLAN_EGRESS_PRIORITY_CMD,
+       SET_VLAN_NAME_TYPE_CMD,
+       SET_VLAN_FLAG_CMD
+};
+
+enum vlan_name_types {
+       VLAN_NAME_TYPE_PLUS_VID, /* Name will look like:  vlan0005 */
+       VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like:  eth1.0005 */
+       VLAN_NAME_TYPE_PLUS_VID_NO_PAD, /* Name will look like:  vlan5 */
+       VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD, /* Name will look like:  eth0.5 */
+       VLAN_NAME_TYPE_HIGHEST
+};
+
+struct vlan_ioctl_args {
+       int cmd; /* Should be one of the vlan_ioctl_cmds enum above. */
+       char device1[24];
+
+        union {
+               char device2[24];
+               int VID;
+               unsigned int skb_priority;
+               unsigned int name_type;
+               unsigned int bind_type;
+               unsigned int flag; /* Matches vlan_dev_info flags */
+        } u;
+
+       short vlan_qos;   
+};
+
+#endif /* !(_LINUX_IF_VLAN_H_) */
diff --git a/xen/include/xen/in.h b/xen/include/xen/in.h
new file mode 100644 (file)
index 0000000..12f7052
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Definitions of the Internet Protocol.
+ *
+ * Version:    @(#)in.h        1.0.1   04/21/93
+ *
+ * Authors:    Original taken from the GNU Project <netinet/in.h> file.
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_IN_H
+#define _LINUX_IN_H
+
+#include <xen/types.h>
+#include <xen/socket.h>
+
+/* Standard well-defined IP protocols.  */
+enum {
+  IPPROTO_IP = 0,              /* Dummy protocol for TCP               */
+  IPPROTO_ICMP = 1,            /* Internet Control Message Protocol    */
+  IPPROTO_IGMP = 2,            /* Internet Group Management Protocol   */
+  IPPROTO_IPIP = 4,            /* IPIP tunnels (older KA9Q tunnels use 94) */
+  IPPROTO_TCP = 6,             /* Transmission Control Protocol        */
+  IPPROTO_EGP = 8,             /* Exterior Gateway Protocol            */
+  IPPROTO_PUP = 12,            /* PUP protocol                         */
+  IPPROTO_UDP = 17,            /* User Datagram Protocol               */
+  IPPROTO_IDP = 22,            /* XNS IDP protocol                     */
+  IPPROTO_RSVP = 46,           /* RSVP protocol                        */
+  IPPROTO_GRE = 47,            /* Cisco GRE tunnels (rfc 1701,1702)    */
+
+  IPPROTO_IPV6  = 41,          /* IPv6-in-IPv4 tunnelling              */
+
+  IPPROTO_PIM    = 103,                /* Protocol Independent Multicast       */
+
+  IPPROTO_ESP = 50,            /* Encapsulation Security Payload protocol */
+  IPPROTO_AH = 51,             /* Authentication Header protocol       */
+  IPPROTO_COMP   = 108,                /* Compression Header protocol */
+
+  IPPROTO_RAW   = 255,         /* Raw IP packets                       */
+  IPPROTO_MAX
+};
+
+
+/* Internet address. */
+struct in_addr {
+       __u32   s_addr;
+};
+
+#define IP_TOS         1
+#define IP_TTL         2
+#define IP_HDRINCL     3
+#define IP_OPTIONS     4
+#define IP_ROUTER_ALERT        5
+#define IP_RECVOPTS    6
+#define IP_RETOPTS     7
+#define IP_PKTINFO     8
+#define IP_PKTOPTIONS  9
+#define IP_MTU_DISCOVER        10
+#define IP_RECVERR     11
+#define IP_RECVTTL     12
+#define        IP_RECVTOS      13
+#define IP_MTU         14
+#define IP_FREEBIND    15
+
+/* BSD compatibility */
+#define IP_RECVRETOPTS IP_RETOPTS
+
+/* IP_MTU_DISCOVER values */
+#define IP_PMTUDISC_DONT               0       /* Never send DF frames */
+#define IP_PMTUDISC_WANT               1       /* Use per route hints  */
+#define IP_PMTUDISC_DO                 2       /* Always DF            */
+
+#define IP_MULTICAST_IF                        32
+#define IP_MULTICAST_TTL               33
+#define IP_MULTICAST_LOOP              34
+#define IP_ADD_MEMBERSHIP              35
+#define IP_DROP_MEMBERSHIP             36
+
+/* These need to appear somewhere around here */
+#define IP_DEFAULT_MULTICAST_TTL        1
+#define IP_DEFAULT_MULTICAST_LOOP       1
+
+/* Request struct for multicast socket ops */
+
+struct ip_mreq 
+{
+       struct in_addr imr_multiaddr;   /* IP multicast address of group */
+       struct in_addr imr_interface;   /* local IP address of interface */
+};
+
+struct ip_mreqn
+{
+       struct in_addr  imr_multiaddr;          /* IP multicast address of group */
+       struct in_addr  imr_address;            /* local IP address of interface */
+       int             imr_ifindex;            /* Interface index */
+};
+
+struct in_pktinfo
+{
+       int             ipi_ifindex;
+       struct in_addr  ipi_spec_dst;
+       struct in_addr  ipi_addr;
+};
+
+/* Structure describing an Internet (IP) socket address. */
+#define __SOCK_SIZE__  16              /* sizeof(struct sockaddr)      */
+struct sockaddr_in {
+  sa_family_t          sin_family;     /* Address family               */
+  unsigned short int   sin_port;       /* Port number                  */
+  struct in_addr       sin_addr;       /* Internet address             */
+
+  /* Pad to size of `struct sockaddr'. */
+  unsigned char                __pad[__SOCK_SIZE__ - sizeof(short int) -
+                       sizeof(unsigned short int) - sizeof(struct in_addr)];
+};
+#define sin_zero       __pad           /* for BSD UNIX comp. -FvK      */
+
+
+/*
+ * Definitions of the bits in an Internet address integer.
+ * On subnets, host and network parts are found according
+ * to the subnet mask, not these masks.
+ */
+#define        IN_CLASSA(a)            ((((long int) (a)) & 0x80000000) == 0)
+#define        IN_CLASSA_NET           0xff000000
+#define        IN_CLASSA_NSHIFT        24
+#define        IN_CLASSA_HOST          (0xffffffff & ~IN_CLASSA_NET)
+#define        IN_CLASSA_MAX           128
+
+#define        IN_CLASSB(a)            ((((long int) (a)) & 0xc0000000) == 0x80000000)
+#define        IN_CLASSB_NET           0xffff0000
+#define        IN_CLASSB_NSHIFT        16
+#define        IN_CLASSB_HOST          (0xffffffff & ~IN_CLASSB_NET)
+#define        IN_CLASSB_MAX           65536
+
+#define        IN_CLASSC(a)            ((((long int) (a)) & 0xe0000000) == 0xc0000000)
+#define        IN_CLASSC_NET           0xffffff00
+#define        IN_CLASSC_NSHIFT        8
+#define        IN_CLASSC_HOST          (0xffffffff & ~IN_CLASSC_NET)
+
+#define        IN_CLASSD(a)            ((((long int) (a)) & 0xf0000000) == 0xe0000000)
+#define        IN_MULTICAST(a)         IN_CLASSD(a)
+#define IN_MULTICAST_NET       0xF0000000
+
+#define        IN_EXPERIMENTAL(a)      ((((long int) (a)) & 0xf0000000) == 0xf0000000)
+#define        IN_BADCLASS(a)          IN_EXPERIMENTAL((a))
+
+/* Address to accept any incoming messages. */
+#define        INADDR_ANY              ((unsigned long int) 0x00000000)
+
+/* Address to send to all hosts. */
+#define        INADDR_BROADCAST        ((unsigned long int) 0xffffffff)
+
+/* Address indicating an error return. */
+#define        INADDR_NONE             ((unsigned long int) 0xffffffff)
+
+/* Network number for local host loopback. */
+#define        IN_LOOPBACKNET          127
+
+/* Address to loopback in software to local host.  */
+#define        INADDR_LOOPBACK         0x7f000001      /* 127.0.0.1   */
+#define        IN_LOOPBACK(a)          ((((long int) (a)) & 0xff000000) == 0x7f000000)
+
+/* Defines for Multicast INADDR */
+#define INADDR_UNSPEC_GROUP    0xe0000000U     /* 224.0.0.0   */
+#define INADDR_ALLHOSTS_GROUP  0xe0000001U     /* 224.0.0.1   */
+#define INADDR_ALLRTRS_GROUP    0xe0000002U    /* 224.0.0.2 */
+#define INADDR_MAX_LOCAL_GROUP  0xe00000ffU    /* 224.0.0.255 */
+
+
+/* <asm/byteorder.h> contains the htonl type stuff.. */
+#include <asm/byteorder.h> 
+
+#ifdef __KERNEL__
+/* Some random defines to make it easier in the kernel.. */
+#define LOOPBACK(x)    (((x) & htonl(0xff000000)) == htonl(0x7f000000))
+#define MULTICAST(x)   (((x) & htonl(0xf0000000)) == htonl(0xe0000000))
+#define BADCLASS(x)    (((x) & htonl(0xf0000000)) == htonl(0xf0000000))
+#define ZERONET(x)     (((x) & htonl(0xff000000)) == htonl(0x00000000))
+#define LOCAL_MCAST(x) (((x) & htonl(0xFFFFFF00)) == htonl(0xE0000000))
+
+#endif
+
+#endif /* _LINUX_IN_H */
diff --git a/xen/include/xen/init.h b/xen/include/xen/init.h
new file mode 100644 (file)
index 0000000..4b0589b
--- /dev/null
@@ -0,0 +1,170 @@
+#ifndef _LINUX_INIT_H
+#define _LINUX_INIT_H
+
+#include <xen/config.h>
+
+/* These macros are used to mark some functions or 
+ * initialized data (doesn't apply to uninitialized data)
+ * as `initialization' functions. The kernel can take this
+ * as hint that the function is used only during the initialization
+ * phase and free up used memory resources after
+ *
+ * Usage:
+ * For functions:
+ * 
+ * You should add __init immediately before the function name, like:
+ *
+ * static void __init initme(int x, int y)
+ * {
+ *    extern int z; z = x * y;
+ * }
+ *
+ * If the function has a prototype somewhere, you can also add
+ * __init between closing brace of the prototype and semicolon:
+ *
+ * extern int initialize_foobar_device(int, int, int) __init;
+ *
+ * For initialized data:
+ * You should insert __initdata between the variable name and equal
+ * sign followed by value, e.g.:
+ *
+ * static int init_variable __initdata = 0;
+ * static char linux_logo[] __initdata = { 0x32, 0x36, ... };
+ *
+ * Don't forget to initialize data not at file scope, i.e. within a function,
+ * as gcc otherwise puts the data into the bss section and not into the init
+ * section.
+ * 
+ * Also note, that this data cannot be "const".
+ */
+
+#ifndef MODULE
+
+#ifndef __ASSEMBLY__
+
+/*
+ * Used for initialization calls..
+ */
+typedef int (*initcall_t)(void);
+typedef void (*exitcall_t)(void);
+
+extern initcall_t __initcall_start, __initcall_end;
+
+#define __initcall(fn)                                                         \
+       static initcall_t __initcall_##fn __init_call = fn
+#define __exitcall(fn)                                                         \
+       static exitcall_t __exitcall_##fn __exit_call = fn
+
+/*
+ * Used for kernel command line parameter setup
+ */
+struct kernel_param {
+       const char *str;
+       int (*setup_func)(char *);
+};
+
+extern struct kernel_param __setup_start, __setup_end;
+
+#define __setup(str, fn)                                                               \
+       static char __setup_str_##fn[] __initdata = str;                                \
+       static struct kernel_param __setup_##fn __attribute__((unused)) __initsetup = { __setup_str_##fn, fn }
+
+#endif /* __ASSEMBLY__ */
+
+/*
+ * Mark functions and data as being only used at initialization
+ * or exit time.
+ */
+#define __init         __attribute__ ((__section__ (".text.init")))
+#define __exit         __attribute__ ((unused, __section__(".text.exit")))
+#define __initdata     __attribute__ ((__section__ (".data.init")))
+#define __exitdata     __attribute__ ((unused, __section__ (".data.exit")))
+#define __initsetup    __attribute__ ((unused,__section__ (".setup.init")))
+#define __init_call    __attribute__ ((unused,__section__ (".initcall.init")))
+#define __exit_call    __attribute__ ((unused,__section__ (".exitcall.exit")))
+
+/* For assembly routines */
+#define __INIT         .section        ".text.init","ax"
+#define __FINIT                .previous
+#define __INITDATA     .section        ".data.init","aw"
+
+/**
+ * module_init() - driver initialization entry point
+ * @x: function to be run at kernel boot time or module insertion
+ * 
+ * module_init() will add the driver initialization routine in
+ * the "__initcall.int" code segment if the driver is checked as
+ * "y" or static, or else it will wrap the driver initialization
+ * routine with init_module() which is used by insmod and
+ * modprobe when the driver is used as a module.
+ */
+#define module_init(x) __initcall(x);
+
+/**
+ * module_exit() - driver exit entry point
+ * @x: function to be run when driver is removed
+ * 
+ * module_exit() will wrap the driver clean-up code
+ * with cleanup_module() when used with rmmod when
+ * the driver is a module.  If the driver is statically
+ * compiled into the kernel, module_exit() has no effect.
+ */
+#define module_exit(x) __exitcall(x);
+
+#else
+
+#define __init
+#define __exit
+#define __initdata
+#define __exitdata
+#define __initcall(fn)
+/* For assembly routines */
+#define __INIT
+#define __FINIT
+#define __INITDATA
+
+/* These macros create a dummy inline: gcc 2.9x does not count alias
+ as usage, hence the `unused function' warning when __init functions
+ are declared static. We use the dummy __*_module_inline functions
+ both to kill the warning and check the type of the init/cleanup
+ function. */
+typedef int (*__init_module_func_t)(void);
+typedef void (*__cleanup_module_func_t)(void);
+#define module_init(x) \
+       int init_module(void) __attribute__((alias(#x))); \
+       static inline __init_module_func_t __init_module_inline(void) \
+       { return x; }
+#define module_exit(x) \
+       void cleanup_module(void) __attribute__((alias(#x))); \
+       static inline __cleanup_module_func_t __cleanup_module_inline(void) \
+       { return x; }
+
+#define __setup(str,func) /* nothing */
+
+#endif
+
+#ifdef CONFIG_HOTPLUG
+#define __devinit
+#define __devinitdata
+#define __devexit
+#define __devexitdata
+#else
+#define __devinit __init
+#define __devinitdata __initdata
+#define __devexit __exit
+#define __devexitdata __exitdata
+#endif
+
+/* Functions marked as __devexit may be discarded at kernel link time, depending
+   on config options.  Newer versions of binutils detect references from
+   retained sections to discarded sections and flag an error.  Pointers to
+   __devexit functions must use __devexit_p(function_name), the wrapper will
+   insert either the function_name or NULL, depending on the config options.
+ */
+#if defined(MODULE) || defined(CONFIG_HOTPLUG)
+#define __devexit_p(x) x
+#else
+#define __devexit_p(x) NULL
+#endif
+
+#endif /* _LINUX_INIT_H */
diff --git a/xen/include/xen/interrupt.h b/xen/include/xen/interrupt.h
new file mode 100644 (file)
index 0000000..f9f2762
--- /dev/null
@@ -0,0 +1,256 @@
+/* interrupt.h */
+#ifndef _LINUX_INTERRUPT_H
+#define _LINUX_INTERRUPT_H
+
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/smp.h>
+#include <xen/cache.h>
+
+#include <asm/bitops.h>
+#include <asm/atomic.h>
+#include <asm/ptrace.h>
+
+/* For 2.6.x compatibility */
+typedef void irqreturn_t;
+#define IRQ_NONE
+#define IRQ_HANDLED
+#define IRQ_RETVAL(x)
+                                                                                
+struct irqaction {
+       void (*handler)(int, void *, struct pt_regs *);
+       unsigned long flags;
+       unsigned long mask;
+       const char *name;
+       void *dev_id;
+       struct irqaction *next;
+};
+
+
+enum {
+       TIMER_BH = 0,
+       SCSI_BH
+};
+
+#include <asm/hardirq.h>
+#include <asm/softirq.h>
+
+
+enum
+{
+       HI_SOFTIRQ=0,
+       NET_RX_SOFTIRQ,
+       AC_TIMER_SOFTIRQ,
+       TASKLET_SOFTIRQ,
+        BLKDEV_RESPONSE_SOFTIRQ,
+        NET_TX_SOFTIRQ
+};
+
+/* softirq mask and active fields moved to irq_cpustat_t in
+ * asm/hardirq.h to get better cache usage.  KAO
+ */
+
+struct softirq_action
+{
+       void    (*action)(struct softirq_action *);
+       void    *data;
+};
+
+asmlinkage void do_softirq(void);
+extern void open_softirq(int nr, void (*action)(struct softirq_action*), void *data);
+extern void softirq_init(void);
+#define __cpu_raise_softirq(cpu, nr) set_bit(nr, &softirq_pending(cpu))
+extern void FASTCALL(cpu_raise_softirq(unsigned int cpu, unsigned int nr));
+extern void FASTCALL(raise_softirq(unsigned int nr));
+
+
+
+/* Tasklets --- multithreaded analogue of BHs.
+
+   Main feature differing them of generic softirqs: tasklet
+   is running only on one CPU simultaneously.
+
+   Main feature differing them of BHs: different tasklets
+   may be run simultaneously on different CPUs.
+
+   Properties:
+   * If tasklet_schedule() is called, then tasklet is guaranteed
+     to be executed on some cpu at least once after this.
+   * If the tasklet is already scheduled, but its excecution is still not
+     started, it will be executed only once.
+   * If this tasklet is already running on another CPU (or schedule is called
+     from tasklet itself), it is rescheduled for later.
+   * Tasklet is strictly serialized wrt itself, but not
+     wrt another tasklets. If client needs some intertask synchronization,
+     he makes it with spinlocks.
+ */
+
+struct tasklet_struct
+{
+       struct tasklet_struct *next;
+       unsigned long state;
+       atomic_t count;
+       void (*func)(unsigned long);
+       unsigned long data;
+};
+
+#define DECLARE_TASKLET(name, func, data) \
+struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }
+
+#define DECLARE_TASKLET_DISABLED(name, func, data) \
+struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data }
+
+
+enum
+{
+       TASKLET_STATE_SCHED,    /* Tasklet is scheduled for execution */
+       TASKLET_STATE_RUN       /* Tasklet is running (SMP only) */
+};
+
+struct tasklet_head
+{
+       struct tasklet_struct *list;
+} __attribute__ ((__aligned__(SMP_CACHE_BYTES)));
+
+extern struct tasklet_head tasklet_vec[NR_CPUS];
+extern struct tasklet_head tasklet_hi_vec[NR_CPUS];
+
+#ifdef CONFIG_SMP
+static inline int tasklet_trylock(struct tasklet_struct *t)
+{
+       return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state);
+}
+
+static inline void tasklet_unlock(struct tasklet_struct *t)
+{
+       smp_mb__before_clear_bit(); 
+       clear_bit(TASKLET_STATE_RUN, &(t)->state);
+}
+
+static inline void tasklet_unlock_wait(struct tasklet_struct *t)
+{
+       while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { barrier(); }
+}
+#else
+#define tasklet_trylock(t) 1
+#define tasklet_unlock_wait(t) do { } while (0)
+#define tasklet_unlock(t) do { } while (0)
+#endif
+
+extern void FASTCALL(__tasklet_schedule(struct tasklet_struct *t));
+
+static inline void tasklet_schedule(struct tasklet_struct *t)
+{
+       if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
+               __tasklet_schedule(t);
+}
+
+extern void FASTCALL(__tasklet_hi_schedule(struct tasklet_struct *t));
+
+static inline void tasklet_hi_schedule(struct tasklet_struct *t)
+{
+       if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
+               __tasklet_hi_schedule(t);
+}
+
+
+static inline void tasklet_disable_nosync(struct tasklet_struct *t)
+{
+       atomic_inc(&t->count);
+       smp_mb__after_atomic_inc();
+}
+
+static inline void tasklet_disable(struct tasklet_struct *t)
+{
+       tasklet_disable_nosync(t);
+       tasklet_unlock_wait(t);
+       smp_mb();
+}
+
+static inline void tasklet_enable(struct tasklet_struct *t)
+{
+       smp_mb__before_atomic_dec();
+       if (atomic_dec_and_test(&t->count) &&
+           test_bit(TASKLET_STATE_SCHED, &t->state))
+               __tasklet_schedule(t);
+}
+
+static inline void tasklet_hi_enable(struct tasklet_struct *t)
+{
+       smp_mb__before_atomic_dec();
+       if (atomic_dec_and_test(&t->count) &&
+           test_bit(TASKLET_STATE_SCHED, &t->state))
+               __tasklet_hi_schedule(t);
+}
+
+extern void tasklet_kill(struct tasklet_struct *t);
+extern void tasklet_init(struct tasklet_struct *t,
+                        void (*func)(unsigned long), unsigned long data);
+
+#ifdef CONFIG_SMP
+
+#define SMP_TIMER_NAME(name) name##__thr
+
+#define SMP_TIMER_DEFINE(name, task) \
+DECLARE_TASKLET(task, name##__thr, 0); \
+static void name (unsigned long dummy) \
+{ \
+       tasklet_schedule(&(task)); \
+}
+
+#else /* CONFIG_SMP */
+
+#define SMP_TIMER_NAME(name) name
+#define SMP_TIMER_DEFINE(name, task)
+
+#endif /* CONFIG_SMP */
+
+
+/* Old BH definitions */
+
+extern struct tasklet_struct bh_task_vec[];
+
+/* It is exported _ONLY_ for wait_on_irq(). */
+extern spinlock_t global_bh_lock;
+
+static inline void mark_bh(int nr)
+{
+       tasklet_hi_schedule(bh_task_vec+nr);
+}
+
+extern void init_bh(int nr, void (*routine)(void));
+extern void remove_bh(int nr);
+
+
+/*
+ * Autoprobing for irqs:
+ *
+ * probe_irq_on() and probe_irq_off() provide robust primitives
+ * for accurate IRQ probing during kernel initialization.  They are
+ * reasonably simple to use, are not "fooled" by spurious interrupts,
+ * and, unlike other attempts at IRQ probing, they do not get hung on
+ * stuck interrupts (such as unused PS2 mouse interfaces on ASUS boards).
+ *
+ * For reasonably foolproof probing, use them as follows:
+ *
+ * 1. clear and/or mask the device's internal interrupt.
+ * 2. sti();
+ * 3. irqs = probe_irq_on();      // "take over" all unassigned idle IRQs
+ * 4. enable the device and cause it to trigger an interrupt.
+ * 5. wait for the device to interrupt, using non-intrusive polling or a delay.
+ * 6. irq = probe_irq_off(irqs);  // get IRQ number, 0=none, negative=multiple
+ * 7. service the device to clear its pending interrupt.
+ * 8. loop again if paranoia is required.
+ *
+ * probe_irq_on() returns a mask of allocated irq's.
+ *
+ * probe_irq_off() takes the mask as a parameter,
+ * and returns the irq number which occurred,
+ * or zero if none occurred, or a negative irq number
+ * if more than one irq occurred.
+ */
+extern unsigned long probe_irq_on(void);       /* returns 0 on failure */
+extern int probe_irq_off(unsigned long);       /* returns 0 or negative on failure */
+extern unsigned int probe_irq_mask(unsigned long);     /* returns mask of ISA interrupts */
+
+#endif
diff --git a/xen/include/xen/ioctl.h b/xen/include/xen/ioctl.h
new file mode 100644 (file)
index 0000000..aa91eb3
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef _LINUX_IOCTL_H
+#define _LINUX_IOCTL_H
+
+#include <asm/ioctl.h>
+
+#endif /* _LINUX_IOCTL_H */
+
diff --git a/xen/include/xen/ioport.h b/xen/include/xen/ioport.h
new file mode 100644 (file)
index 0000000..0416edc
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * ioport.h    Definitions of routines for detecting, reserving and
+ *             allocating system resources.
+ *
+ * Authors:    Linus Torvalds
+ */
+
+#ifndef _LINUX_IOPORT_H
+#define _LINUX_IOPORT_H
+
+/*
+ * Resources are tree-like, allowing
+ * nesting etc..
+ */
+struct resource {
+       const char *name;
+       unsigned long start, end;
+       unsigned long flags;
+       struct resource *parent, *sibling, *child;
+};
+
+struct resource_list {
+       struct resource_list *next;
+       struct resource *res;
+       struct pci_dev *dev;
+};
+
+/*
+ * IO resources have these defined flags.
+ */
+#define IORESOURCE_BITS                0x000000ff      /* Bus-specific bits */
+
+#define IORESOURCE_IO          0x00000100      /* Resource type */
+#define IORESOURCE_MEM         0x00000200
+#define IORESOURCE_IRQ         0x00000400
+#define IORESOURCE_DMA         0x00000800
+
+#define IORESOURCE_PREFETCH    0x00001000      /* No side effects */
+#define IORESOURCE_READONLY    0x00002000
+#define IORESOURCE_CACHEABLE   0x00004000
+#define IORESOURCE_RANGELENGTH 0x00008000
+#define IORESOURCE_SHADOWABLE  0x00010000
+#define IORESOURCE_BUS_HAS_VGA 0x00080000
+
+#define IORESOURCE_UNSET       0x20000000
+#define IORESOURCE_AUTO                0x40000000
+#define IORESOURCE_BUSY                0x80000000      /* Driver has marked this resource busy */
+
+/* ISA PnP IRQ specific bits (IORESOURCE_BITS) */
+#define IORESOURCE_IRQ_HIGHEDGE                (1<<0)
+#define IORESOURCE_IRQ_LOWEDGE         (1<<1)
+#define IORESOURCE_IRQ_HIGHLEVEL       (1<<2)
+#define IORESOURCE_IRQ_LOWLEVEL                (1<<3)
+
+/* ISA PnP DMA specific bits (IORESOURCE_BITS) */
+#define IORESOURCE_DMA_TYPE_MASK       (3<<0)
+#define IORESOURCE_DMA_8BIT            (0<<0)
+#define IORESOURCE_DMA_8AND16BIT       (1<<0)
+#define IORESOURCE_DMA_16BIT           (2<<0)
+
+#define IORESOURCE_DMA_MASTER          (1<<2)
+#define IORESOURCE_DMA_BYTE            (1<<3)
+#define IORESOURCE_DMA_WORD            (1<<4)
+
+#define IORESOURCE_DMA_SPEED_MASK      (3<<6)
+#define IORESOURCE_DMA_COMPATIBLE      (0<<6)
+#define IORESOURCE_DMA_TYPEA           (1<<6)
+#define IORESOURCE_DMA_TYPEB           (2<<6)
+#define IORESOURCE_DMA_TYPEF           (3<<6)
+
+/* ISA PnP memory I/O specific bits (IORESOURCE_BITS) */
+#define IORESOURCE_MEM_WRITEABLE       (1<<0)  /* dup: IORESOURCE_READONLY */
+#define IORESOURCE_MEM_CACHEABLE       (1<<1)  /* dup: IORESOURCE_CACHEABLE */
+#define IORESOURCE_MEM_RANGELENGTH     (1<<2)  /* dup: IORESOURCE_RANGELENGTH */
+#define IORESOURCE_MEM_TYPE_MASK       (3<<3)
+#define IORESOURCE_MEM_8BIT            (0<<3)
+#define IORESOURCE_MEM_16BIT           (1<<3)
+#define IORESOURCE_MEM_8AND16BIT       (2<<3)
+#define IORESOURCE_MEM_SHADOWABLE      (1<<5)  /* dup: IORESOURCE_SHADOWABLE */
+#define IORESOURCE_MEM_EXPANSIONROM    (1<<6)
+
+/* PC/ISA/whatever - the normal PC address spaces: IO and memory */
+extern struct resource ioport_resource;
+extern struct resource iomem_resource;
+
+extern int get_resource_list(struct resource *, char *buf, int size);
+
+extern int check_resource(struct resource *root, unsigned long, unsigned long);
+extern int request_resource(struct resource *root, struct resource *new);
+extern int release_resource(struct resource *new);
+extern int allocate_resource(struct resource *root, struct resource *new,
+                            unsigned long size,
+                            unsigned long min, unsigned long max,
+                            unsigned long align,
+                            void (*alignf)(void *, struct resource *,
+                                           unsigned long, unsigned long),
+                            void *alignf_data);
+
+/* Convenience shorthand with allocation */
+#define request_region(start,n,name)   __request_region(&ioport_resource, (start), (n), (name))
+#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))
+
+extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name);
+
+/* Compatibility cruft */
+#define check_region(start,n)  __check_region(&ioport_resource, (start), (n))
+#define release_region(start,n)        __release_region(&ioport_resource, (start), (n))
+#define check_mem_region(start,n)      __check_region(&iomem_resource, (start), (n))
+#define release_mem_region(start,n)    __release_region(&iomem_resource, (start), (n))
+
+extern int __check_region(struct resource *, unsigned long, unsigned long);
+extern void __release_region(struct resource *, unsigned long, unsigned long);
+
+#define get_ioport_list(buf)   get_resource_list(&ioport_resource, buf, PAGE_SIZE)
+#define get_mem_list(buf)      get_resource_list(&iomem_resource, buf, PAGE_SIZE)
+
+#define HAVE_AUTOIRQ
+extern void autoirq_setup(int waittime);
+extern int autoirq_report(int waittime);
+
+#endif /* _LINUX_IOPORT_H */
diff --git a/xen/include/xen/irq.h b/xen/include/xen/irq.h
new file mode 100644 (file)
index 0000000..f4d81be
--- /dev/null
@@ -0,0 +1,63 @@
+#ifndef __irq_h
+#define __irq_h
+
+#include <xen/config.h>
+#include <xen/spinlock.h>
+#include <asm/ptrace.h>
+
+/*
+ * IRQ line status.
+ */
+#define IRQ_INPROGRESS 1       /* IRQ handler active - do not enter! */
+#define IRQ_DISABLED   2       /* IRQ disabled - do not enter! */
+#define IRQ_PENDING    4       /* IRQ pending - replay on enable */
+#define IRQ_REPLAY     8       /* IRQ has been replayed but not acked yet */
+#define IRQ_AUTODETECT 16      /* IRQ is being autodetected */
+#define IRQ_WAITING    32      /* IRQ not yet seen - for autodetection */
+#define IRQ_LEVEL      64      /* IRQ level triggered */
+#define IRQ_MASKED     128     /* IRQ masked - shouldn't be seen again */
+#define IRQ_PER_CPU    256     /* IRQ is per CPU */
+
+/*
+ * Interrupt controller descriptor. This is all we need
+ * to describe about the low-level hardware. 
+ */
+struct hw_interrupt_type {
+       const char * typename;
+       unsigned int (*startup)(unsigned int irq);
+       void (*shutdown)(unsigned int irq);
+       void (*enable)(unsigned int irq);
+       void (*disable)(unsigned int irq);
+       void (*ack)(unsigned int irq);
+       void (*end)(unsigned int irq);
+       void (*set_affinity)(unsigned int irq, unsigned long mask);
+};
+
+typedef struct hw_interrupt_type  hw_irq_controller;
+
+#include <asm/irq.h>
+
+/*
+ * This is the "IRQ descriptor", which contains various information
+ * about the irq, including what kind of hardware handling it has,
+ * whether it is disabled etc etc.
+ *
+ * Pad this out to 32 bytes for cache and indexing reasons.
+ */
+typedef struct {
+       unsigned int status;            /* IRQ status */
+       hw_irq_controller *handler;
+       struct irqaction *action;       /* IRQ action list */
+       unsigned int depth;             /* nested irq disables */
+       spinlock_t lock;
+} ____cacheline_aligned irq_desc_t;
+
+extern irq_desc_t irq_desc [NR_IRQS];
+
+extern int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);
+extern int setup_irq(unsigned int , struct irqaction * );
+
+extern hw_irq_controller no_irq_type;  /* needed in every arch ? */
+extern void no_action(int cpl, void *dev_id, struct pt_regs *regs);
+
+#endif /* __asm_h */
diff --git a/xen/include/xen/irq_cpustat.h b/xen/include/xen/irq_cpustat.h
new file mode 100644 (file)
index 0000000..4b34bf5
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef __irq_cpustat_h
+#define __irq_cpustat_h
+
+/*
+ * Contains default mappings for irq_cpustat_t, used by almost every
+ * architecture.  Some arch (like s390) have per cpu hardware pages and
+ * they define their own mappings for irq_stat.
+ *
+ * Keith Owens <kaos@ocs.com.au> July 2000.
+ */
+
+#include <xen/config.h>
+
+/*
+ * Simple wrappers reducing source bloat.  Define all irq_stat fields
+ * here, even ones that are arch dependent.  That way we get common
+ * definitions instead of differing sets for each arch.
+ */
+
+extern irq_cpustat_t irq_stat[];                       /* defined in asm/hardirq.h */
+
+#ifdef CONFIG_SMP
+#define __IRQ_STAT(cpu, member)        (irq_stat[cpu].member)
+#else
+#define __IRQ_STAT(cpu, member)        ((void)(cpu), irq_stat[0].member)
+#endif 
+
+  /* arch independent irq_stat fields */
+#define softirq_pending(cpu)   __IRQ_STAT((cpu), __softirq_pending)
+#define local_irq_count(cpu)   __IRQ_STAT((cpu), __local_irq_count)
+#define local_bh_count(cpu)    __IRQ_STAT((cpu), __local_bh_count)
+#define syscall_count(cpu)     __IRQ_STAT((cpu), __syscall_count)
+#define nmi_count(cpu)         __IRQ_STAT((cpu), __nmi_count)
+
+#endif /* __irq_cpustat_h */
diff --git a/xen/include/xen/kdev_t.h b/xen/include/xen/kdev_t.h
new file mode 100644 (file)
index 0000000..9d85cba
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef _LINUX_KDEV_T_H
+#define _LINUX_KDEV_T_H
+#if defined(__KERNEL__) || defined(_LVM_H_INCLUDE)
+/*
+As a preparation for the introduction of larger device numbers,
+we introduce a type kdev_t to hold them. No information about
+this type is known outside of this include file.
+
+Objects of type kdev_t designate a device. Outside of the kernel
+the corresponding things are objects of type dev_t - usually an
+integral type with the device major and minor in the high and low
+bits, respectively. Conversion is done by
+
+extern kdev_t to_kdev_t(int);
+
+It is up to the various file systems to decide how objects of type
+dev_t are stored on disk.
+The only other point of contact between kernel and outside world
+are the system calls stat and mknod, new versions of which will
+eventually have to be used in libc.
+
+[Unfortunately, the floppy control ioctls fail to hide the internal
+kernel structures, and the fd_device field of a struct floppy_drive_struct
+is user-visible. So, it remains a dev_t for the moment, with some ugly
+conversions in floppy.c.]
+
+Inside the kernel, we aim for a kdev_t type that is a pointer
+to a structure with information about the device (like major,
+minor, size, blocksize, sectorsize, name, read-only flag,
+struct file_operations etc.).
+
+However, for the time being we let kdev_t be almost the same as dev_t:
+
+typedef struct { unsigned short major, minor; } kdev_t;
+
+Admissible operations on an object of type kdev_t:
+- passing it along
+- comparing it for equality with another such object
+- storing it in ROOT_DEV, inode->i_dev, inode->i_rdev, sb->s_dev,
+  bh->b_dev, req->rq_dev, de->dc_dev, tty->device
+- using its bit pattern as argument in a hash function
+- finding its major and minor
+- complaining about it
+
+An object of type kdev_t is created only by the function MKDEV(),
+with the single exception of the constant 0 (no device).
+
+Right now the other information mentioned above is usually found
+in static arrays indexed by major or major,minor.
+
+An obstacle to immediately using
+    typedef struct { ... (* lots of information *) } *kdev_t
+is the case of mknod used to create a block device that the
+kernel doesn't know about at present (but first learns about
+when some module is inserted).
+
+aeb - 950811
+*/
+
+/* Since MINOR(dev) is used as index in static arrays,
+   the kernel is not quite ready yet for larger minors.
+   However, everything runs fine with an arbitrary kdev_t type. */
+
+#define MINORBITS      8
+#define MINORMASK      ((1U << MINORBITS) - 1)
+
+typedef unsigned short kdev_t;
+
+#define MAJOR(dev)     ((unsigned int) ((dev) >> MINORBITS))
+#define MINOR(dev)     ((unsigned int) ((dev) & MINORMASK))
+#define HASHDEV(dev)   ((unsigned int) (dev))
+#define NODEV          0
+#define MKDEV(ma,mi)   (((ma) << MINORBITS) | (mi))
+#define B_FREE         0xffff          /* yuk */
+
+extern const char * kdevname(kdev_t);  /* note: returns pointer to static data! */
+
+/* 2.5.x compatibility */
+#define mk_kdev(a,b)   MKDEV(a,b)
+#define major(d)       MAJOR(d)
+#define minor(d)       MINOR(d)
+#define kdev_same(a,b) ((a) == (b))
+#define kdev_none(d)   (!(d))
+#define kdev_val(d)    ((unsigned int)(d))
+#define val_to_kdev(d) ((kdev_t)(d))
+
+/*
+As long as device numbers in the outside world have 16 bits only,
+we use these conversions.
+*/
+
+static inline unsigned int kdev_t_to_nr(kdev_t dev) {
+       return (MAJOR(dev)<<8) | MINOR(dev);
+}
+
+static inline kdev_t to_kdev_t(int dev)
+{
+       int major, minor;
+#if 0
+       major = (dev >> 16);
+       if (!major) {
+               major = (dev >> 8);
+               minor = (dev & 0xff);
+       } else
+               minor = (dev & 0xffff);
+#else
+       major = (dev >> 8);
+       minor = (dev & 0xff);
+#endif
+       return MKDEV(major, minor);
+}
+
+#else /* __KERNEL__ || _LVM_H_INCLUDE */
+
+/*
+Some programs want their definitions of MAJOR and MINOR and MKDEV
+from the kernel sources. These must be the externally visible ones.
+*/
+#define MAJOR(dev)     ((dev)>>8)
+#define MINOR(dev)     ((dev) & 0xff)
+#define MKDEV(ma,mi)   ((ma)<<8 | (mi))
+#endif /* __KERNEL__ || _LVM_H_INCLUDE */
+#endif
diff --git a/xen/include/xen/kernel.h b/xen/include/xen/kernel.h
new file mode 100644 (file)
index 0000000..993a6c1
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef _LINUX_KERNEL_H
+#define _LINUX_KERNEL_H
+
+/*
+ * 'kernel.h' contains some often-used function prototypes etc
+ */
+
+/*
+ * min()/max() macros that also do
+ * strict type-checking.. See the
+ * "unnecessary" pointer comparison.
+ */
+#define min(x,y) ({ \
+        const typeof(x) _x = (x);       \
+        const typeof(y) _y = (y);       \
+        (void) (&_x == &_y);            \
+        _x < _y ? _x : _y; })
+
+#define max(x,y) ({ \
+        const typeof(x) _x = (x);       \
+        const typeof(y) _y = (y);       \
+        (void) (&_x == &_y);            \
+        _x > _y ? _x : _y; })
+
+/*
+ * ..and if you can't take the strict
+ * types, you can specify one yourself.
+ *
+ * Or not use min/max at all, of course.
+ */
+#define min_t(type,x,y) \
+        ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
+#define max_t(type,x,y) \
+        ({ type __x = (x); type __y = (y); __x > __y ? __x: __y; })
+
+#endif /* _LINUX_KERNEL_H */
+
diff --git a/xen/include/xen/keyhandler.h b/xen/include/xen/keyhandler.h
new file mode 100644 (file)
index 0000000..03aa53b
--- /dev/null
@@ -0,0 +1,16 @@
+/* 
+** We keep an array of 'handlers' for each key code between 0 and 255; 
+** this is intended to allow very simple debugging routines (toggle 
+** debug flag, dump registers, reboot, etc) to be hooked in in a slightly
+** nicer fashion than just editing the serial/keyboard drivers. 
+*/
+#include <xen/sched.h>
+
+typedef void key_handler(unsigned char key, void *dev_id, 
+                        struct pt_regs *regs); 
+
+extern void add_key_handler(unsigned char key, 
+                           key_handler *handler, char *desc); 
+
+extern key_handler *get_key_handler(unsigned char key); 
+
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
new file mode 100644 (file)
index 0000000..5c55bf8
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef __LIB_H__
+#define __LIB_H__
+
+#include <stdarg.h>
+#include <xen/types.h>
+
+#ifndef NDEBUG
+#define ASSERT(_p) if ( !(_p) ) { printk("Assertion '%s' failed, line %d, file %s", #_p , __LINE__, __FILE__); *(int*)0=0; }
+#else
+#define ASSERT(_p) ((void)0)
+#endif
+
+#define reserve_bootmem(_p,_l) \
+printk("Memory Reservation 0x%lx, %lu bytes\n", (_p), (_l))
+
+/* lib.c */
+#include <xen/string.h>
+
+/* JWS - pulled over linux string library ({asm,linux}/string.h)
+int memcmp(const void * cs,const void * ct,size_t count);
+void * memcpy(void * dest,const void *src,size_t count);
+int strncmp(const char * cs,const char * ct,size_t count);
+int strcmp(const char * cs,const char * ct);
+char * strcpy(char * dest,const char *src);
+char * strncpy(char * dest,const char *src,size_t count);
+void * memset(void * s,int c,size_t count);
+size_t strnlen(const char * s, size_t count);
+size_t strlen(const char * s);
+char * strchr(const char *,int);
+char * strstr(const char * s1,const char * s2);
+*/
+
+unsigned long str_to_quad(unsigned char *s);
+unsigned char *quad_to_str(unsigned long q, unsigned char *s);
+
+/* kernel.c */
+#define printk printf
+void printf (const char *format, ...);
+void panic(const char *format, ...);
+
+/* vsprintf.c */
+extern int sprintf(char * buf, const char * fmt, ...)
+       __attribute__ ((format (printf, 2, 3)));
+extern int vsprintf(char *buf, const char *, va_list);
+extern int snprintf(char * buf, size_t size, const char * fmt, ...)
+       __attribute__ ((format (printf, 3, 4)));
+extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
+
+long simple_strtol(const char *cp,char **endp,unsigned int base);
+unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base);
+long long simple_strtoll(const char *cp,char **endp,unsigned int base);
+
+/* Produce a 32-bit hash from a key string 'k' of length 'len' bytes. */
+u32 hash(unsigned char *k, unsigned long len);
+
+#endif /* __LIB_H__ */
diff --git a/xen/include/xen/list.h b/xen/include/xen/list.h
new file mode 100644 (file)
index 0000000..618f291
--- /dev/null
@@ -0,0 +1,164 @@
+#ifndef _LINUX_LIST_H
+#define _LINUX_LIST_H
+
+#include <xen/lib.h>
+
+/*
+ * Simple doubly linked list implementation.
+ *
+ * Some of the internal functions ("__xxx") are useful when
+ * manipulating whole lists rather than single entries, as
+ * sometimes we already know the next/prev entries and we can
+ * generate better code by using them directly rather than
+ * using the generic single-entry routines.
+ */
+
+struct list_head {
+       struct list_head *next, *prev;
+};
+
+#define LIST_HEAD_INIT(name) { &(name), &(name) }
+
+#define LIST_HEAD(name) \
+       struct list_head name = LIST_HEAD_INIT(name)
+
+#define INIT_LIST_HEAD(ptr) do { \
+       (ptr)->next = (ptr); (ptr)->prev = (ptr); \
+} while (0)
+
+/*
+ * Insert a new entry between two known consecutive entries. 
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static __inline__ void __list_add(struct list_head * new,
+       struct list_head * prev,
+       struct list_head * next)
+{
+       next->prev = new;
+       new->next = next;
+       new->prev = prev;
+       prev->next = new;
+}
+
+/**
+ * list_add - add a new entry
+ * @new: new entry to be added
+ * @head: list head to add it after
+ *
+ * Insert a new entry after the specified head.
+ * This is good for implementing stacks.
+ */
+static __inline__ void list_add(struct list_head *new, struct list_head *head)
+{
+       __list_add(new, head, head->next);
+}
+
+/**
+ * list_add_tail - add a new entry
+ * @new: new entry to be added
+ * @head: list head to add it before
+ *
+ * Insert a new entry before the specified head.
+ * This is useful for implementing queues.
+ */
+static __inline__ void list_add_tail(struct list_head *new, struct list_head *head)
+{
+       __list_add(new, head->prev, head);
+}
+
+/*
+ * Delete a list entry by making the prev/next entries
+ * point to each other.
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static __inline__ void __list_del(struct list_head * prev,
+                                 struct list_head * next)
+{
+       next->prev = prev;
+       prev->next = next;
+}
+
+/**
+ * list_del - deletes entry from list.
+ * @entry: the element to delete from the list.
+ * Note: list_empty on entry does not return true after this, the entry is in an undefined state.
+ */
+static __inline__ void list_del(struct list_head *entry)
+{
+       ASSERT(entry->next->prev == entry);
+       ASSERT(entry->prev->next == entry);
+       __list_del(entry->prev, entry->next);
+}
+
+/**
+ * list_del_init - deletes entry from list and reinitialize it.
+ * @entry: the element to delete from the list.
+ */
+static __inline__ void list_del_init(struct list_head *entry)
+{
+       __list_del(entry->prev, entry->next);
+       INIT_LIST_HEAD(entry); 
+}
+
+/**
+ * list_empty - tests whether a list is empty
+ * @head: the list to test.
+ */
+static __inline__ int list_empty(struct list_head *head)
+{
+       return head->next == head;
+}
+
+/**
+ * list_splice - join two lists
+ * @list: the new list to add.
+ * @head: the place to add it in the first list.
+ */
+static __inline__ void list_splice(struct list_head *list, struct list_head *head)
+{
+       struct list_head *first = list->next;
+
+       if (first != list) {
+               struct list_head *last = list->prev;
+               struct list_head *at = head->next;
+
+               first->prev = head;
+               head->next = first;
+
+               last->next = at;
+               at->prev = last;
+       }
+}
+
+/**
+ * list_entry - get the struct for this entry
+ * @ptr:       the &struct list_head pointer.
+ * @type:      the type of the struct this is embedded in.
+ * @member:    the name of the list_struct within the struct.
+ */
+#define list_entry(ptr, type, member) \
+       ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
+
+/**
+ * list_for_each       -       iterate over a list
+ * @pos:       the &struct list_head to use as a loop counter.
+ * @head:      the head for your list.
+ */
+#define list_for_each(pos, head) \
+       for (pos = (head)->next; pos != (head); pos = pos->next)
+               
+/**
+ * list_for_each_safe  -       iterate over a list safe against removal of list entry
+ * @pos:       the &struct list_head to use as a loop counter.
+ * @n:         another &struct list_head to use as temporary storage
+ * @head:      the head for your list.
+ */
+#define list_for_each_safe(pos, n, head) \
+       for (pos = (head)->next, n = pos->next; pos != (head); \
+               pos = n, n = pos->next)
+
+#endif
diff --git a/xen/include/xen/major.h b/xen/include/xen/major.h
new file mode 100644 (file)
index 0000000..a89a0d2
--- /dev/null
@@ -0,0 +1,199 @@
+#ifndef _LINUX_MAJOR_H
+#define _LINUX_MAJOR_H
+
+#include <xen/kdev_t.h>
+
+/*
+ * This file has definitions for major device numbers.
+ * For the device number assignments, see Documentation/devices.txt.
+ */
+
+/* limits */
+
+/*
+ * Important: Don't change this to 256.  Major number 255 is and must be
+ * reserved for future expansion into a larger dev_t space.
+ */
+#define MAX_CHRDEV     255
+#define MAX_BLKDEV     255
+
+#define UNNAMED_MAJOR  0
+#define MEM_MAJOR      1
+#define RAMDISK_MAJOR  1
+#define FLOPPY_MAJOR   2
+#define PTY_MASTER_MAJOR 2
+#define IDE0_MAJOR     3
+#define PTY_SLAVE_MAJOR 3
+#define HD_MAJOR       IDE0_MAJOR
+#define TTY_MAJOR      4
+#define TTYAUX_MAJOR   5
+#define LP_MAJOR       6
+#define VCS_MAJOR      7
+#define LOOP_MAJOR     7
+#define SCSI_DISK0_MAJOR 8
+#define SCSI_TAPE_MAJOR        9
+#define MD_MAJOR        9
+#define MISC_MAJOR     10
+#define SCSI_CDROM_MAJOR 11
+#define QIC02_TAPE_MAJOR 12
+#define XT_DISK_MAJOR  13
+#define SOUND_MAJOR    14
+#define CDU31A_CDROM_MAJOR 15
+#define JOYSTICK_MAJOR 15
+#define GOLDSTAR_CDROM_MAJOR 16
+#define OPTICS_CDROM_MAJOR 17
+#define SANYO_CDROM_MAJOR 18
+#define CYCLADES_MAJOR  19
+#define CYCLADESAUX_MAJOR 20
+#define MITSUMI_X_CDROM_MAJOR 20
+#define MFM_ACORN_MAJOR 21     /* ARM Linux /dev/mfm */
+#define SCSI_GENERIC_MAJOR 21
+#define Z8530_MAJOR 34
+#define DIGI_MAJOR 23
+#define IDE1_MAJOR     22
+#define DIGICU_MAJOR 22
+#define MITSUMI_CDROM_MAJOR 23
+#define CDU535_CDROM_MAJOR 24
+#define STL_SERIALMAJOR 24
+#define MATSUSHITA_CDROM_MAJOR 25
+#define STL_CALLOUTMAJOR 25
+#define MATSUSHITA_CDROM2_MAJOR 26
+#define QIC117_TAPE_MAJOR 27
+#define MATSUSHITA_CDROM3_MAJOR 27
+#define MATSUSHITA_CDROM4_MAJOR 28
+#define STL_SIOMEMMAJOR 28
+#define ACSI_MAJOR     28
+#define AZTECH_CDROM_MAJOR 29
+#define GRAPHDEV_MAJOR 29      /* SparcLinux & Linux/68k /dev/fb */
+#define SHMIQ_MAJOR    85      /* Linux/mips, SGI /dev/shmiq */
+#define CM206_CDROM_MAJOR 32
+#define IDE2_MAJOR     33
+#define IDE3_MAJOR     34
+#define XPRAM_MAJOR     35      /* expanded storage on S/390 = "slow ram" */
+                                /* proposed by Peter                      */
+#define NETLINK_MAJOR  36
+#define PS2ESDI_MAJOR  36
+#define IDETAPE_MAJOR  37
+#define Z2RAM_MAJOR    37
+#define APBLOCK_MAJOR   38   /* AP1000 Block device */
+#define DDV_MAJOR       39   /* AP1000 DDV block device */
+#define NBD_MAJOR      43   /* Network block device    */
+#define RISCOM8_NORMAL_MAJOR 48
+#define DAC960_MAJOR   48      /* 48..55 */
+#define RISCOM8_CALLOUT_MAJOR 49
+#define MKISS_MAJOR    55
+#define DSP56K_MAJOR    55   /* DSP56001 processor device */
+
+#define IDE4_MAJOR     56
+#define IDE5_MAJOR     57
+
+#define LVM_BLK_MAJOR  58      /* Logical Volume Manager */
+
+#define SCSI_DISK1_MAJOR       65
+#define SCSI_DISK2_MAJOR       66
+#define SCSI_DISK3_MAJOR       67
+#define SCSI_DISK4_MAJOR       68
+#define SCSI_DISK5_MAJOR       69
+#define SCSI_DISK6_MAJOR       70
+#define SCSI_DISK7_MAJOR       71
+
+
+#define COMPAQ_SMART2_MAJOR    72
+#define COMPAQ_SMART2_MAJOR1   73
+#define COMPAQ_SMART2_MAJOR2   74
+#define COMPAQ_SMART2_MAJOR3   75
+#define COMPAQ_SMART2_MAJOR4   76
+#define COMPAQ_SMART2_MAJOR5   77
+#define COMPAQ_SMART2_MAJOR6   78
+#define COMPAQ_SMART2_MAJOR7   79
+
+#define SPECIALIX_NORMAL_MAJOR 75
+#define SPECIALIX_CALLOUT_MAJOR 76
+
+#define COMPAQ_CISS_MAJOR      104
+#define COMPAQ_CISS_MAJOR1     105
+#define COMPAQ_CISS_MAJOR2      106
+#define COMPAQ_CISS_MAJOR3      107
+#define COMPAQ_CISS_MAJOR4      108
+#define COMPAQ_CISS_MAJOR5      109
+#define COMPAQ_CISS_MAJOR6      110
+#define COMPAQ_CISS_MAJOR7      111
+
+#define ATARAID_MAJOR          114
+
+#define DASD_MAJOR      94     /* Official assignations from Peter */
+
+#define MDISK_MAJOR     95     /* Official assignations from Peter */
+
+#define I2O_MAJOR              80      /* 80->87 */
+
+#define IDE6_MAJOR     88
+#define IDE7_MAJOR     89
+#define IDE8_MAJOR     90
+#define IDE9_MAJOR     91
+
+#define UBD_MAJOR      98
+
+#define AURORA_MAJOR 79
+
+#define JSFD_MAJOR     99
+
+#define PHONE_MAJOR    100
+
+#define LVM_CHAR_MAJOR 109     /* Logical Volume Manager */
+
+#define        UMEM_MAJOR      116     /* http://www.umem.com/ Battery Backed RAM */
+
+#define RTF_MAJOR      150
+#define RAW_MAJOR      162
+
+#define USB_ACM_MAJOR          166
+#define USB_ACM_AUX_MAJOR      167
+#define USB_CHAR_MAJOR         180
+
+#define UNIX98_PTY_MASTER_MAJOR        128
+#define UNIX98_PTY_MAJOR_COUNT 8
+#define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT)
+
+#define VXVM_MAJOR             199     /* VERITAS volume i/o driver    */
+#define VXSPEC_MAJOR           200     /* VERITAS volume config driver */
+#define VXDMP_MAJOR            201     /* VERITAS volume multipath driver */
+
+#define MSR_MAJOR              202
+#define CPUID_MAJOR            203
+
+#define OSST_MAJOR     206     /* OnStream-SCx0 SCSI tape */
+
+#define IBM_TTY3270_MAJOR       227    /* Official allocations now */
+#define IBM_FS3270_MAJOR        228
+
+/*
+ * Tests for SCSI devices.
+ */
+
+#define SCSI_DISK_MAJOR(M) ((M) == SCSI_DISK0_MAJOR || \
+  ((M) >= SCSI_DISK1_MAJOR && (M) <= SCSI_DISK7_MAJOR))
+  
+#define SCSI_BLK_MAJOR(M) \
+  (SCSI_DISK_MAJOR(M)  \
+   || (M) == SCSI_CDROM_MAJOR)
+
+static __inline__ int scsi_blk_major(int m) {
+       return SCSI_BLK_MAJOR(m);
+}
+
+/*
+ * Tests for IDE devices
+ */
+#define IDE_DISK_MAJOR(M)      ((M) == IDE0_MAJOR || (M) == IDE1_MAJOR || \
+                               (M) == IDE2_MAJOR || (M) == IDE3_MAJOR || \
+                               (M) == IDE4_MAJOR || (M) == IDE5_MAJOR || \
+                               (M) == IDE6_MAJOR || (M) == IDE7_MAJOR || \
+                               (M) == IDE8_MAJOR || (M) == IDE9_MAJOR)
+
+static __inline__ int ide_blk_major(int m)
+{
+       return IDE_DISK_MAJOR(m);
+}
+
+#endif
diff --git a/xen/include/xen/mii.h b/xen/include/xen/mii.h
new file mode 100644 (file)
index 0000000..b26f1d9
--- /dev/null
@@ -0,0 +1,200 @@
+/*
+ * linux/mii.h: definitions for MII-compatible transceivers
+ * Originally drivers/net/sunhme.h.
+ *
+ * Copyright (C) 1996, 1999, 2001 David S. Miller (davem@redhat.com)
+ */
+
+#ifndef __LINUX_MII_H__
+#define __LINUX_MII_H__
+
+#include <xen/types.h>
+
+/* Generic MII registers. */
+
+#define MII_BMCR            0x00        /* Basic mode control register */
+#define MII_BMSR            0x01        /* Basic mode status register  */
+#define MII_PHYSID1         0x02        /* PHYS ID 1                   */
+#define MII_PHYSID2         0x03        /* PHYS ID 2                   */
+#define MII_ADVERTISE       0x04        /* Advertisement control reg   */
+#define MII_LPA             0x05        /* Link partner ability reg    */
+#define MII_EXPANSION       0x06        /* Expansion register          */
+#define MII_DCOUNTER        0x12        /* Disconnect counter          */
+#define MII_FCSCOUNTER      0x13        /* False carrier counter       */
+#define MII_NWAYTEST        0x14        /* N-way auto-neg test reg     */
+#define MII_RERRCOUNTER     0x15        /* Receive error counter       */
+#define MII_SREVISION       0x16        /* Silicon revision            */
+#define MII_RESV1           0x17        /* Reserved...                 */
+#define MII_LBRERROR        0x18        /* Lpback, rx, bypass error    */
+#define MII_PHYADDR         0x19        /* PHY address                 */
+#define MII_RESV2           0x1a        /* Reserved...                 */
+#define MII_TPISTATUS       0x1b        /* TPI status for 10mbps       */
+#define MII_NCONFIG         0x1c        /* Network interface config    */
+
+/* Basic mode control register. */
+#define BMCR_RESV               0x007f  /* Unused...                   */
+#define BMCR_CTST               0x0080  /* Collision test              */
+#define BMCR_FULLDPLX           0x0100  /* Full duplex                 */
+#define BMCR_ANRESTART          0x0200  /* Auto negotiation restart    */
+#define BMCR_ISOLATE            0x0400  /* Disconnect DP83840 from MII */
+#define BMCR_PDOWN              0x0800  /* Powerdown the DP83840       */
+#define BMCR_ANENABLE           0x1000  /* Enable auto negotiation     */
+#define BMCR_SPEED100           0x2000  /* Select 100Mbps              */
+#define BMCR_LOOPBACK           0x4000  /* TXD loopback bits           */
+#define BMCR_RESET              0x8000  /* Reset the DP83840           */
+
+/* Basic mode status register. */
+#define BMSR_ERCAP              0x0001  /* Ext-reg capability          */
+#define BMSR_JCD                0x0002  /* Jabber detected             */
+#define BMSR_LSTATUS            0x0004  /* Link status                 */
+#define BMSR_ANEGCAPABLE        0x0008  /* Able to do auto-negotiation */
+#define BMSR_RFAULT             0x0010  /* Remote fault detected       */
+#define BMSR_ANEGCOMPLETE       0x0020  /* Auto-negotiation complete   */
+#define BMSR_RESV               0x07c0  /* Unused...                   */
+#define BMSR_10HALF             0x0800  /* Can do 10mbps, half-duplex  */
+#define BMSR_10FULL             0x1000  /* Can do 10mbps, full-duplex  */
+#define BMSR_100HALF            0x2000  /* Can do 100mbps, half-duplex */
+#define BMSR_100FULL            0x4000  /* Can do 100mbps, full-duplex */
+#define BMSR_100BASE4           0x8000  /* Can do 100mbps, 4k packets  */
+
+/* Advertisement control register. */
+#define ADVERTISE_SLCT          0x001f  /* Selector bits               */
+#define ADVERTISE_CSMA          0x0001  /* Only selector supported     */
+#define ADVERTISE_10HALF        0x0020  /* Try for 10mbps half-duplex  */
+#define ADVERTISE_10FULL        0x0040  /* Try for 10mbps full-duplex  */
+#define ADVERTISE_100HALF       0x0080  /* Try for 100mbps half-duplex */
+#define ADVERTISE_100FULL       0x0100  /* Try for 100mbps full-duplex */
+#define ADVERTISE_100BASE4      0x0200  /* Try for 100mbps 4k packets  */
+#define ADVERTISE_RESV          0x1c00  /* Unused...                   */
+#define ADVERTISE_RFAULT        0x2000  /* Say we can detect faults    */
+#define ADVERTISE_LPACK         0x4000  /* Ack link partners response  */
+#define ADVERTISE_NPAGE         0x8000  /* Next page bit               */
+
+#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | \
+                       ADVERTISE_CSMA)
+#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \
+                       ADVERTISE_100HALF | ADVERTISE_100FULL)
+
+/* Link partner ability register. */
+#define LPA_SLCT                0x001f  /* Same as advertise selector  */
+#define LPA_10HALF              0x0020  /* Can do 10mbps half-duplex   */
+#define LPA_10FULL              0x0040  /* Can do 10mbps full-duplex   */
+#define LPA_100HALF             0x0080  /* Can do 100mbps half-duplex  */
+#define LPA_100FULL             0x0100  /* Can do 100mbps full-duplex  */
+#define LPA_100BASE4            0x0200  /* Can do 100mbps 4k packets   */
+#define LPA_RESV                0x1c00  /* Unused...                   */
+#define LPA_RFAULT              0x2000  /* Link partner faulted        */
+#define LPA_LPACK               0x4000  /* Link partner acked us       */
+#define LPA_NPAGE               0x8000  /* Next page bit               */
+
+#define LPA_DUPLEX             (LPA_10FULL | LPA_100FULL)
+#define LPA_100                        (LPA_100FULL | LPA_100HALF | LPA_100BASE4)
+
+/* Expansion register for auto-negotiation. */
+#define EXPANSION_NWAY          0x0001  /* Can do N-way auto-nego      */
+#define EXPANSION_LCWP          0x0002  /* Got new RX page code word   */
+#define EXPANSION_ENABLENPAGE   0x0004  /* This enables npage words    */
+#define EXPANSION_NPCAPABLE     0x0008  /* Link partner supports npage */
+#define EXPANSION_MFAULTS       0x0010  /* Multiple faults detected    */
+#define EXPANSION_RESV          0xffe0  /* Unused...                   */
+
+/* N-way test register. */
+#define NWAYTEST_RESV1          0x00ff  /* Unused...                   */
+#define NWAYTEST_LOOPBACK       0x0100  /* Enable loopback for N-way   */
+#define NWAYTEST_RESV2          0xfe00  /* Unused...                   */
+
+
+struct mii_if_info {
+       int phy_id;
+       int advertising;
+       int phy_id_mask;
+       int reg_num_mask;
+
+       unsigned int full_duplex : 1;   /* is full duplex? */
+       unsigned int force_media : 1;   /* is autoneg. disabled? */
+
+       struct net_device *dev;
+       int (*mdio_read) (struct net_device *dev, int phy_id, int location);
+       void (*mdio_write) (struct net_device *dev, int phy_id, int location, int val);
+};
+
+struct ethtool_cmd;
+struct mii_ioctl_data;
+
+#if 0
+extern int mii_link_ok (struct mii_if_info *mii);
+extern int mii_nway_restart (struct mii_if_info *mii);
+extern int mii_ethtool_gset(struct mii_if_info *mii, struct ethtool_cmd *ecmd);
+extern int mii_ethtool_sset(struct mii_if_info *mii, struct ethtool_cmd *ecmd);
+extern void mii_check_link (struct mii_if_info *mii);
+extern unsigned int mii_check_media (struct mii_if_info *mii,
+                                    unsigned int ok_to_print,
+                                    unsigned int init_media);
+extern int generic_mii_ioctl(struct mii_if_info *mii_if,
+                            struct mii_ioctl_data *mii_data, int cmd,
+                            unsigned int *duplex_changed);
+#endif
+
+
+/* This structure is used in all SIOCxMIIxxx ioctl calls */
+struct mii_ioctl_data {
+       u16             phy_id;
+       u16             reg_num;
+       u16             val_in;
+       u16             val_out;
+};
+
+
+/**
+ * mii_nway_result
+ * @negotiated: value of MII ANAR and'd with ANLPAR
+ *
+ * Given a set of MII abilities, check each bit and returns the
+ * currently supported media, in the priority order defined by
+ * IEEE 802.3u.  We use LPA_xxx constants but note this is not the
+ * value of LPA solely, as described above.
+ *
+ * The one exception to IEEE 802.3u is that 100baseT4 is placed
+ * between 100T-full and 100T-half.  If your phy does not support
+ * 100T4 this is fine.  If your phy places 100T4 elsewhere in the
+ * priority order, you will need to roll your own function.
+ */
+static inline unsigned int mii_nway_result (unsigned int negotiated)
+{
+       unsigned int ret;
+
+       if (negotiated & LPA_100FULL)
+               ret = LPA_100FULL;
+       else if (negotiated & LPA_100BASE4)
+               ret = LPA_100BASE4;
+       else if (negotiated & LPA_100HALF)
+               ret = LPA_100HALF;
+       else if (negotiated & LPA_10FULL)
+               ret = LPA_10FULL;
+       else
+               ret = LPA_10HALF;
+
+       return ret;
+}
+
+/**
+ * mii_duplex
+ * @duplex_lock: Non-zero if duplex is locked at full
+ * @negotiated: value of MII ANAR and'd with ANLPAR
+ *
+ * A small helper function for a common case.  Returns one
+ * if the media is operating or locked at full duplex, and
+ * returns zero otherwise.
+ */
+static inline unsigned int mii_duplex (unsigned int duplex_lock,
+                                      unsigned int negotiated)
+{
+       if (duplex_lock)
+               return 1;
+       if (mii_nway_result(negotiated) & LPA_DUPLEX)
+               return 1;
+       return 0;
+}
+
+
+#endif /* __LINUX_MII_H__ */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
new file mode 100644 (file)
index 0000000..7d43f43
--- /dev/null
@@ -0,0 +1,331 @@
+
+#ifndef __XENO_MM_H__
+#define __XENO_MM_H__
+
+#include <xen/config.h>
+#include <xen/list.h>
+#include <xen/spinlock.h>
+#include <xen/perfc.h>
+#include <xen/sched.h>
+
+#include <asm/pgalloc.h>
+#include <asm/atomic.h>
+#include <asm/desc.h>
+#include <asm/flushtlb.h>
+#include <asm/io.h>
+
+#include <hypervisor-ifs/hypervisor-if.h>
+
+/*
+ * These are for compatibility with calls to the Linux memory allocators.
+ */
+
+#define __GFP_DMA       0x01
+#define GFP_DMA         __GFP_DMA
+#define __GFP_WAIT      0x10    /* Can wait and reschedule? */
+#define __GFP_HIGH      0x20    /* Should access emergency pools? */
+#define __GFP_IO        0x40    /* Can start low memory physical IO? */
+#define __GFP_HIGHIO    0x80    /* Can start high mem physical IO? */
+#define __GFP_FS        0x100   /* Can call down to low-level FS? */
+#define GFP_ATOMIC      (__GFP_HIGH)
+#define GFP_KERNEL      (__GFP_HIGH | __GFP_WAIT | __GFP_IO | \
+                         __GFP_HIGHIO | __GFP_FS)
+
+/*
+ * The following is for page_alloc.c.
+ */
+
+void init_page_allocator(unsigned long min, unsigned long max);
+unsigned long __get_free_pages(int mask, int order);
+void __free_pages(unsigned long p, int order);
+#define get_free_page(_m) (__get_free_pages((_m),0))
+#define __get_free_page(_m) (__get_free_pages((_m),0))
+#define free_pages(_p,_o) (__free_pages(_p,_o))
+#define free_page(_p) (__free_pages(_p,0))
+
+
+/*
+ * Per-page-frame information.
+ */
+
+struct pfn_info
+{
+    /* Each frame can be threaded onto a doubly-linked list. */
+    struct list_head list;
+    /* The following possible uses are context-dependent. */
+    union {
+        /* Page is in use and not a zombie: we keep a pointer to its owner. */
+        struct task_struct *domain;
+        /* Page is not currently allocated: mask of possibly-tainted TLBs. */
+        unsigned long cpu_mask;
+        /* Page is a zombie: this word currently has no use. */
+        unsigned long _unused;
+    } u;
+    /* Reference count and various PGC_xxx flags and fields. */
+    unsigned long       count_and_flags;
+    /* Type reference count and various PGT_xxx flags and fields. */
+    unsigned long       type_and_flags;
+    /* Timestamp from 'TLB clock', used to reduce need for safety flushes. */
+    unsigned long       tlbflush_timestamp;
+};
+
+ /* The following page types are MUTUALLY EXCLUSIVE. */
+#define PGT_none            (0<<29) /* no special uses of this page */
+#define PGT_l1_page_table   (1<<29) /* using this page as an L1 page table? */
+#define PGT_l2_page_table   (2<<29) /* using this page as an L2 page table? */
+#define PGT_l3_page_table   (3<<29) /* using this page as an L3 page table? */
+#define PGT_l4_page_table   (4<<29) /* using this page as an L4 page table? */
+#define PGT_gdt_page        (5<<29) /* using this page in a GDT? */
+#define PGT_ldt_page        (6<<29) /* using this page in an LDT? */
+#define PGT_writeable_page  (7<<29) /* has writable mappings of this page? */
+#define PGT_type_mask       (7<<29) /* Bits 29-31. */
+ /* Has this page been validated for use as its current type? */
+#define _PGT_validated      28
+#define PGT_validated       (1<<_PGT_validated)
+ /* 28-bit count of uses of this frame as its current type. */
+#define PGT_count_mask      ((1<<28)-1)
+
+ /* The owner of this page is dead: 'u.domain' is no longer valid. */
+#define _PGC_zombie                   31
+#define PGC_zombie                    (1<<_PGC_zombie)
+ /* For safety, force a TLB flush when this page's type changes. */
+#define _PGC_tlb_flush_on_type_change 30
+#define PGC_tlb_flush_on_type_change  (1<<_PGC_tlb_flush_on_type_change)
+ /* Owning guest has pinned this page to its current type? */
+#define _PGC_guest_pinned             29
+#define PGC_guest_pinned              (1<<_PGC_guest_pinned)
+ /* Cleared when the owning guest 'frees' this page. */
+#define _PGC_allocated                28
+#define PGC_allocated                 (1<<_PGC_allocated)
+ /* 28-bit count of references to this frame. */
+#define PGC_count_mask                ((1<<28)-1)
+
+/* We trust the slab allocator in slab.c, and our use of it. */
+#define PageSlab(page)         (1)
+#define PageSetSlab(page)      ((void)0)
+#define PageClearSlab(page)    ((void)0)
+
+#define IS_XEN_HEAP_FRAME(_pfn) (page_to_phys(_pfn) < MAX_MONITOR_ADDRESS)
+
+#define SHARE_PFN_WITH_DOMAIN(_pfn, _dom)                                  \
+    do {                                                                   \
+        (_pfn)->u.domain = (_dom);                                         \
+        wmb(); /* install valid domain ptr before updating refcnt. */      \
+        (_pfn)->count_and_flags = 1; /* Xen holds a writeable reference */ \
+        (_pfn)->type_and_flags  = PGT_writeable_page | PGT_validated | 1;  \
+    } while ( 0 )
+
+#define UNSHARE_PFN(_pfn) put_page_and_type(_pfn)
+
+extern struct pfn_info *frame_table;
+extern unsigned long frame_table_size;
+extern struct list_head free_list;
+extern spinlock_t free_list_lock;
+extern unsigned int free_pfns;
+extern unsigned long max_page;
+void init_frametable(unsigned long nr_pages);
+
+struct pfn_info *alloc_domain_page(struct task_struct *p);
+void free_domain_page(struct pfn_info *page);
+
+int alloc_page_type(struct pfn_info *page, unsigned int type);
+void free_page_type(struct pfn_info *page, unsigned int type);
+
+static inline void put_page(struct pfn_info *page)
+{
+    unsigned long nx, x, y = page->count_and_flags;
+
+    do {
+        x  = y;
+        nx = x - 1;
+    }
+    while ( unlikely((y = cmpxchg(&page->count_and_flags, x, nx)) != x) );
+
+    if ( unlikely((nx & PGC_count_mask) == 0) )
+        free_domain_page(page);
+}
+
+
+static inline int get_page(struct pfn_info *page,
+                           struct task_struct *domain)
+{
+    unsigned long x, nx, y = page->count_and_flags;
+    struct task_struct *p, *np = page->u.domain;
+
+    do {
+        x  = y;
+        nx = x + 1;
+        p  = np;
+        if ( unlikely((x & PGC_count_mask) == 0) ||  /* Not allocated? */
+             unlikely((nx & PGC_count_mask) == 0) || /* Count overflow? */
+             unlikely(x & PGC_zombie) ||             /* Zombie? */
+             unlikely(p != domain) )                 /* Wrong owner? */
+        {
+            DPRINTK("Error pfn %08lx: ed=%p,sd=%p,caf=%08lx\n",
+                    page_to_pfn(page), domain, p, x);
+            return 0;
+        }
+        __asm__ __volatile__(
+            LOCK_PREFIX "cmpxchg8b %3"
+            : "=a" (np), "=d" (y), "=b" (p),
+              "=m" (*(volatile unsigned long long *)(&page->u.domain))
+            : "0" (p), "1" (x), "b" (p), "c" (nx) );
+    }
+    while ( unlikely(np != p) || unlikely(y != x) );
+
+    return 1;
+}
+
+
+static inline void put_page_type(struct pfn_info *page)
+{
+    unsigned long nx, x, y = page->type_and_flags;
+
+ again:
+    do {
+        x  = y;
+        nx = x - 1;
+        if ( unlikely((nx & PGT_count_mask) == 0) )
+        {
+            page->tlbflush_timestamp = tlbflush_clock;
+            if ( unlikely((nx & PGT_type_mask) <= PGT_l4_page_table) &&
+                 likely(nx & PGT_validated) )
+            {
+                /*
+                 * Page-table pages must be unvalidated when count is zero. The
+                 * 'free' is safe because the refcnt is non-zero and the
+                 * validated bit is clear => other ops will spin or fail.
+                 */
+                if ( unlikely((y = cmpxchg(&page->type_and_flags, x, 
+                                           x & ~PGT_validated)) != x) )
+                    goto again;
+                /* We cleared the 'valid bit' so we must do the clear up. */
+                free_page_type(page, x & PGT_type_mask);
+                /* Carry on as we were, but with the 'valid bit' now clear. */
+                x  &= ~PGT_validated;
+                nx &= ~PGT_validated;
+            }
+        }
+    }
+    while ( unlikely((y = cmpxchg(&page->type_and_flags, x, nx)) != x) );
+}
+
+
+static inline int get_page_type(struct pfn_info *page, unsigned long type)
+{
+    unsigned long nx, x, y = page->type_and_flags;
+ again:
+    do {
+        x  = y;
+        nx = x + 1;
+        if ( unlikely((nx & PGT_count_mask) == 0) )
+        {
+            DPRINTK("Type count overflow on pfn %08lx\n", page_to_pfn(page));
+            return 0;
+        }
+        else if ( unlikely((x & PGT_count_mask) == 0) )
+        {
+            if ( (x & PGT_type_mask) != type )
+            {
+                nx &= ~(PGT_type_mask | PGT_validated);
+                nx |= type;
+                /* No extra validation needed for writeable pages. */
+                if ( type == PGT_writeable_page )
+                    nx |= PGT_validated;
+            }
+        }
+        else if ( unlikely((x & PGT_type_mask) != type) )
+        {
+            DPRINTK("Unexpected type (saw %08lx != exp %08lx) for pfn %08lx\n",
+                    x & PGT_type_mask, type, page_to_pfn(page));
+            return 0;
+        }
+        else if ( unlikely(!(x & PGT_validated)) )
+        {
+            /* Someone else is updating validation of this page. Wait... */
+            while ( (y = page->type_and_flags) != x )
+            {
+                rep_nop();
+                barrier();
+            }
+            goto again;
+        }
+    }
+    while ( unlikely((y = cmpxchg(&page->type_and_flags, x, nx)) != x) );
+
+    if ( unlikely(!(nx & PGT_validated)) )
+    {
+        /* Try to validate page type; drop the new reference on failure. */
+        if ( unlikely(!alloc_page_type(page, type)) )
+        {
+            DPRINTK("Error while validating pfn %08lx for type %08lx\n",
+                    page_to_pfn(page), type);
+            put_page_type(page);
+            return 0;
+        }
+        set_bit(_PGT_validated, &page->type_and_flags);
+    }
+
+    return 1;
+}
+
+
+static inline void put_page_and_type(struct pfn_info *page)
+{
+    put_page_type(page);
+    put_page(page);
+}
+
+
+static inline int get_page_and_type(struct pfn_info *page,
+                                    struct task_struct *domain,
+                                    unsigned int type)
+{
+    int rc = get_page(page, domain);
+
+    if ( likely(rc) && unlikely(!get_page_type(page, type)) )
+    {
+        put_page(page);
+        rc = 0;
+    }
+
+    return rc;
+}
+
+#define ASSERT_PAGE_IS_TYPE(_p, _t)                \
+    ASSERT(((_p)->type_and_flags & PGT_type_mask) == (_t));  \
+    ASSERT(((_p)->type_and_flags & PGT_count_mask) != 0)
+#define ASSERT_PAGE_IS_DOMAIN(_p, _d)              \
+    ASSERT(((_p)->count_and_flags & PGC_count_mask) != 0);  \
+    ASSERT((_p)->u.domain == (_d))
+
+int check_descriptor(unsigned long a, unsigned long b);
+
+/*
+ * The MPT (machine->physical mapping table) is an array of word-sized
+ * values, indexed on machine frame number. It is expected that guest OSes
+ * will use it to store a "physical" frame number to give the appearance of
+ * contiguous (or near contiguous) physical memory.
+ */
+#undef  machine_to_phys_mapping
+#define machine_to_phys_mapping ((unsigned long *)RDWR_MPT_VIRT_START)
+
+/* Part of the domain API. */
+int do_mmu_update(mmu_update_t *updates, int count);
+
+#define DEFAULT_GDT_ENTRIES     ((LAST_RESERVED_GDT_ENTRY*8)+7)
+#define DEFAULT_GDT_ADDRESS     ((unsigned long)gdt_table)
+
+#ifdef MEMORY_GUARD
+void *memguard_init(void *heap_start);
+void memguard_guard_range(void *p, unsigned long l);
+void memguard_unguard_range(void *p, unsigned long l);
+int memguard_is_guarded(void *p);
+#else
+#define memguard_init(_s)              (_s)
+#define memguard_guard_range(_p,_l)    ((void)0)
+#define memguard_unguard_range(_p,_l)  ((void)0)
+#define memguard_is_guarded(_p)        (0)
+#endif
+
+#endif /* __XENO_MM_H__ */
diff --git a/xen/include/xen/module.h b/xen/include/xen/module.h
new file mode 100644 (file)
index 0000000..e8453f5
--- /dev/null
@@ -0,0 +1,417 @@
+/*
+ * Dynamic loading of modules into the kernel.
+ *
+ * Rewritten by Richard Henderson <rth@tamu.edu> Dec 1996
+ */
+
+#ifndef _LINUX_MODULE_H
+#define _LINUX_MODULE_H
+
+#include <xen/config.h>
+#include <xen/spinlock.h>
+#include <xen/list.h>
+
+#ifdef __GENKSYMS__
+#  define _set_ver(sym) sym
+#  undef  MODVERSIONS
+#  define MODVERSIONS
+#else /* ! __GENKSYMS__ */
+# if !defined(MODVERSIONS) && defined(EXPORT_SYMTAB)
+#   define _set_ver(sym) sym
+#   include <xen/modversions.h>
+# endif
+#endif /* __GENKSYMS__ */
+
+#include <asm/atomic.h>
+
+/* Don't need to bring in all of uaccess.h just for this decl.  */
+struct exception_table_entry;
+
+/* Used by get_kernel_syms, which is obsolete.  */
+struct kernel_sym
+{
+       unsigned long value;
+       char name[60];          /* should have been 64-sizeof(long); oh well */
+};
+
+struct module_symbol
+{
+       unsigned long value;
+       const char *name;
+};
+
+struct module_ref
+{
+       struct module *dep;     /* "parent" pointer */
+       struct module *ref;     /* "child" pointer */
+       struct module_ref *next_ref;
+};
+
+/* TBD */
+struct module_persist;
+
+struct module
+{
+       unsigned long size_of_struct;   /* == sizeof(module) */
+       struct module *next;
+       const char *name;
+       unsigned long size;
+
+       union
+       {
+               atomic_t usecount;
+               long pad;
+       } uc;                           /* Needs to keep its size - so says rth */
+
+       unsigned long flags;            /* AUTOCLEAN et al */
+
+       unsigned nsyms;
+       unsigned ndeps;
+
+       struct module_symbol *syms;
+       struct module_ref *deps;
+       struct module_ref *refs;
+       int (*init)(void);
+       void (*cleanup)(void);
+       const struct exception_table_entry *ex_table_start;
+       const struct exception_table_entry *ex_table_end;
+#ifdef __alpha__
+       unsigned long gp;
+#endif
+       /* Members past this point are extensions to the basic
+          module support and are optional.  Use mod_member_present()
+          to examine them.  */
+       const struct module_persist *persist_start;
+       const struct module_persist *persist_end;
+       int (*can_unload)(void);
+       int runsize;                    /* In modutils, not currently used */
+       const char *kallsyms_start;     /* All symbols for kernel debugging */
+       const char *kallsyms_end;
+       const char *archdata_start;     /* arch specific data for module */
+       const char *archdata_end;
+       const char *kernel_data;        /* Reserved for kernel internal use */
+};
+
+struct module_info
+{
+       unsigned long addr;
+       unsigned long size;
+       unsigned long flags;
+       long usecount;
+};
+
+/* Bits of module.flags.  */
+
+#define MOD_UNINITIALIZED      0
+#define MOD_RUNNING            1
+#define MOD_DELETED            2
+#define MOD_AUTOCLEAN          4
+#define MOD_VISITED            8
+#define MOD_USED_ONCE          16
+#define MOD_JUST_FREED         32
+#define MOD_INITIALIZING       64
+
+/* Values for query_module's which.  */
+
+#define QM_MODULES     1
+#define QM_DEPS                2
+#define QM_REFS                3
+#define QM_SYMBOLS     4
+#define QM_INFO                5
+
+/* Can the module be queried? */
+#define MOD_CAN_QUERY(mod) (((mod)->flags & (MOD_RUNNING | MOD_INITIALIZING)) && !((mod)->flags & MOD_DELETED))
+
+/* When struct module is extended, we must test whether the new member
+   is present in the header received from insmod before we can use it.  
+   This function returns true if the member is present.  */
+
+#define mod_member_present(mod,member)                                         \
+       ((unsigned long)(&((struct module *)0L)->member + 1)            \
+        <= (mod)->size_of_struct)
+
+/*
+ * Ditto for archdata.  Assumes mod->archdata_start and mod->archdata_end
+ * are validated elsewhere.
+ */
+#define mod_archdata_member_present(mod, type, member)                 \
+       (((unsigned long)(&((type *)0L)->member) +                      \
+         sizeof(((type *)0L)->member)) <=                              \
+        ((mod)->archdata_end - (mod)->archdata_start))
+        
+
+/* Check if an address p with number of entries n is within the body of module m */
+#define mod_bound(p, n, m) ((unsigned long)(p) >= ((unsigned long)(m) + ((m)->size_of_struct)) && \
+                (unsigned long)((p)+(n)) <= (unsigned long)(m) + (m)->size)
+
+/* Backwards compatibility definition.  */
+
+#define GET_USE_COUNT(module)  (atomic_read(&(module)->uc.usecount))
+
+/* Poke the use count of a module.  */
+
+#define __MOD_INC_USE_COUNT(mod)                                       \
+       (atomic_inc(&(mod)->uc.usecount), (mod)->flags |= MOD_VISITED|MOD_USED_ONCE)
+#define __MOD_DEC_USE_COUNT(mod)                                       \
+       (atomic_dec(&(mod)->uc.usecount), (mod)->flags |= MOD_VISITED)
+#define __MOD_IN_USE(mod)                                              \
+       (mod_member_present((mod), can_unload) && (mod)->can_unload     \
+        ? (mod)->can_unload() : atomic_read(&(mod)->uc.usecount))
+
+/* Indirect stringification.  */
+
+#define __MODULE_STRING_1(x)   #x
+#define __MODULE_STRING(x)     __MODULE_STRING_1(x)
+
+/* Generic inter module communication.
+ *
+ * NOTE: This interface is intended for small amounts of data that are
+ *       passed between two objects and either or both of the objects
+ *       might be compiled as modules.  Do not over use this interface.
+ *
+ *       If more than two objects need to communicate then you probably
+ *       need a specific interface instead of abusing this generic
+ *       interface.  If both objects are *always* built into the kernel
+ *       then a global extern variable is good enough, you do not need
+ *       this interface.
+ *
+ * Keith Owens <kaos@ocs.com.au> 28 Oct 2000.
+ */
+
+#ifdef __KERNEL__
+#define HAVE_INTER_MODULE
+extern void inter_module_register(const char *, struct module *, const void *);
+extern void inter_module_unregister(const char *);
+extern const void *inter_module_get(const char *);
+extern const void *inter_module_get_request(const char *, const char *);
+extern void inter_module_put(const char *);
+
+struct inter_module_entry {
+       struct list_head list;
+       const char *im_name;
+       struct module *owner;
+       const void *userdata;
+};
+
+#if 0
+extern int try_inc_mod_count(struct module *mod);
+#else
+static inline int try_inc_mod_count(struct module * mod)
+{
+    if ( mod ) __MOD_INC_USE_COUNT(mod);
+    return 1;
+}
+#endif
+#endif /* __KERNEL__ */
+
+#if defined(MODULE) && !defined(__GENKSYMS__)
+
+/* Embedded module documentation macros.  */
+
+/* For documentation purposes only.  */
+
+#define MODULE_AUTHOR(name)                                               \
+const char __module_author[] __attribute__((section(".modinfo"))) =       \
+"author=" name
+
+#define MODULE_DESCRIPTION(desc)                                          \
+const char __module_description[] __attribute__((section(".modinfo"))) =   \
+"description=" desc
+
+/* Could potentially be used by kmod...  */
+
+#define MODULE_SUPPORTED_DEVICE(dev)                                      \
+const char __module_device[] __attribute__((section(".modinfo"))) =       \
+"device=" dev
+
+/* Used to verify parameters given to the module.  The TYPE arg should
+   be a string in the following format:
+       [min[-max]]{b,h,i,l,s}
+   The MIN and MAX specifiers delimit the length of the array.  If MAX
+   is omitted, it defaults to MIN; if both are omitted, the default is 1.
+   The final character is a type specifier:
+       b       byte
+       h       short
+       i       int
+       l       long
+       s       string
+*/
+
+#define MODULE_PARM(var,type)                  \
+const char __module_parm_##var[]               \
+__attribute__((section(".modinfo"))) =         \
+"parm_" __MODULE_STRING(var) "=" type
+
+#define MODULE_PARM_DESC(var,desc)             \
+const char __module_parm_desc_##var[]          \
+__attribute__((section(".modinfo"))) =         \
+"parm_desc_" __MODULE_STRING(var) "=" desc
+
+/*
+ * MODULE_DEVICE_TABLE exports information about devices
+ * currently supported by this module.  A device type, such as PCI,
+ * is a C-like identifier passed as the first arg to this macro.
+ * The second macro arg is the variable containing the device
+ * information being made public.
+ *
+ * The following is a list of known device types (arg 1),
+ * and the C types which are to be passed as arg 2.
+ * pci - struct pci_device_id - List of PCI ids supported by this module
+ * isapnp - struct isapnp_device_id - List of ISA PnP ids supported by this module
+ * usb - struct usb_device_id - List of USB ids supported by this module
+ */
+#define MODULE_GENERIC_TABLE(gtype,name)       \
+static const unsigned long __module_##gtype##_size \
+  __attribute__ ((unused)) = sizeof(struct gtype##_id); \
+static const struct gtype##_id * __module_##gtype##_table \
+  __attribute__ ((unused)) = name
+
+/*
+ * The following license idents are currently accepted as indicating free
+ * software modules
+ *
+ *     "GPL"                           [GNU Public License v2 or later]
+ *     "GPL and additional rights"     [GNU Public License v2 rights and more]
+ *     "Dual BSD/GPL"                  [GNU Public License v2 or BSD license choice]
+ *     "Dual MPL/GPL"                  [GNU Public License v2 or Mozilla license choice]
+ *
+ * The following other idents are available
+ *
+ *     "Proprietary"                   [Non free products]
+ *
+ * There are dual licensed components, but when running with Linux it is the
+ * GPL that is relevant so this is a non issue. Similarly LGPL linked with GPL
+ * is a GPL combined work.
+ *
+ * This exists for several reasons
+ * 1.  So modinfo can show license info for users wanting to vet their setup 
+ *     is free
+ * 2.  So the community can ignore bug reports including proprietary modules
+ * 3.  So vendors can do likewise based on their own policies
+ */
+#define MODULE_LICENSE(license)        \
+static const char __module_license[] __attribute__((section(".modinfo"))) =   \
+"license=" license
+
+/* Define the module variable, and usage macros.  */
+extern struct module __this_module;
+
+#define THIS_MODULE            (&__this_module)
+#define MOD_INC_USE_COUNT      __MOD_INC_USE_COUNT(THIS_MODULE)
+#define MOD_DEC_USE_COUNT      __MOD_DEC_USE_COUNT(THIS_MODULE)
+#define MOD_IN_USE             __MOD_IN_USE(THIS_MODULE)
+
+#if 0
+#include <xen/version.h>
+static const char __module_kernel_version[] __attribute__((section(".modinfo"))) =
+"kernel_version=" UTS_RELEASE;
+#ifdef MODVERSIONS
+static const char __module_using_checksums[] __attribute__((section(".modinfo"))) =
+"using_checksums=1";
+#endif
+#endif
+
+#else /* MODULE */
+
+#define MODULE_AUTHOR(name)
+#define MODULE_LICENSE(license)
+#define MODULE_DESCRIPTION(desc)
+#define MODULE_SUPPORTED_DEVICE(name)
+#define MODULE_PARM(var,type)
+#define MODULE_PARM_DESC(var,desc)
+
+/* Create a dummy reference to the table to suppress gcc unused warnings.  Put
+ * the reference in the .data.exit section which is discarded when code is built
+ * in, so the reference does not bloat the running kernel.  Note: cannot be
+ * const, other exit data may be writable.
+ */
+#define MODULE_GENERIC_TABLE(gtype,name) \
+static const struct gtype##_id * __module_##gtype##_table \
+  __attribute__ ((unused, __section__(".data.exit"))) = name
+
+#ifndef __GENKSYMS__
+
+#define THIS_MODULE            NULL
+#define MOD_INC_USE_COUNT      do { } while (0)
+#define MOD_DEC_USE_COUNT      do { } while (0)
+#define MOD_IN_USE             1
+
+extern struct module *module_list;
+
+#endif /* !__GENKSYMS__ */
+
+#endif /* MODULE */
+
+#define MODULE_DEVICE_TABLE(type,name)         \
+  MODULE_GENERIC_TABLE(type##_device,name)
+
+/* Export a symbol either from the kernel or a module.
+
+   In the kernel, the symbol is added to the kernel's global symbol table.
+
+   In a module, it controls which variables are exported.  If no
+   variables are explicitly exported, the action is controled by the
+   insmod -[xX] flags.  Otherwise, only the variables listed are exported.
+   This obviates the need for the old register_symtab() function.  */
+
+#if defined(__GENKSYMS__)
+
+/* We want the EXPORT_SYMBOL tag left intact for recognition.  */
+
+#elif !defined(CONFIG_MODULES)
+
+#define __EXPORT_SYMBOL(sym,str)
+#define EXPORT_SYMBOL(var)
+#define EXPORT_SYMBOL_NOVERS(var)
+#define EXPORT_SYMBOL_GPL(var)
+
+#elif !defined(EXPORT_SYMTAB)
+
+#define __EXPORT_SYMBOL(sym,str)   error this_object_must_be_defined_as_export_objs_in_the_Makefile
+#define EXPORT_SYMBOL(var)        error this_object_must_be_defined_as_export_objs_in_the_Makefile
+#define EXPORT_SYMBOL_NOVERS(var)  error this_object_must_be_defined_as_export_objs_in_the_Makefile
+#define EXPORT_SYMBOL_GPL(var)  error this_object_must_be_defined_as_export_objs_in_the_Makefile
+
+#else
+
+#define __EXPORT_SYMBOL(sym, str)                      \
+const char __kstrtab_##sym[]                           \
+__attribute__((section(".kstrtab"))) = str;            \
+const struct module_symbol __ksymtab_##sym             \
+__attribute__((section("__ksymtab"))) =                        \
+{ (unsigned long)&sym, __kstrtab_##sym }
+
+#define __EXPORT_SYMBOL_GPL(sym, str)                  \
+const char __kstrtab_##sym[]                           \
+__attribute__((section(".kstrtab"))) = "GPLONLY_" str; \
+const struct module_symbol __ksymtab_##sym             \
+__attribute__((section("__ksymtab"))) =                        \
+{ (unsigned long)&sym, __kstrtab_##sym }
+
+#if defined(MODVERSIONS) || !defined(CONFIG_MODVERSIONS)
+#define EXPORT_SYMBOL(var)  __EXPORT_SYMBOL(var, __MODULE_STRING(var))
+#define EXPORT_SYMBOL_GPL(var)  __EXPORT_SYMBOL_GPL(var, __MODULE_STRING(var))
+#else
+#define EXPORT_SYMBOL(var)  __EXPORT_SYMBOL(var, __MODULE_STRING(__VERSIONED_SYMBOL(var)))
+#define EXPORT_SYMBOL_GPL(var)  __EXPORT_SYMBOL(var, __MODULE_STRING(__VERSIONED_SYMBOL(var)))
+#endif
+
+#define EXPORT_SYMBOL_NOVERS(var)  __EXPORT_SYMBOL(var, __MODULE_STRING(var))
+
+#endif /* __GENKSYMS__ */
+
+#ifdef MODULE
+/* Force a module to export no symbols.  */
+#define EXPORT_NO_SYMBOLS  __asm__(".section __ksymtab\n.previous")
+#else
+#define EXPORT_NO_SYMBOLS
+#endif /* MODULE */
+
+#ifdef CONFIG_MODULES
+#define SET_MODULE_OWNER(some_struct) do { (some_struct)->owner = THIS_MODULE; } while (0)
+#else
+#define SET_MODULE_OWNER(some_struct) do { } while (0)
+#endif
+
+#endif /* _LINUX_MODULE_H */
diff --git a/xen/include/xen/multiboot.h b/xen/include/xen/multiboot.h
new file mode 100644 (file)
index 0000000..4a68f31
--- /dev/null
@@ -0,0 +1,86 @@
+/* multiboot.h - the header for Multiboot */
+/* Copyright (C) 1999, 2001  Free Software Foundation, Inc.
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#ifndef __MULTIBOOT_H__
+#define __MULTIBOOT_H__
+
+#ifndef __ELF__
+#error "Build on a 32-bit ELF system"
+#endif
+
+/* The magic number passed by a Multiboot-compliant boot loader. */
+#define MULTIBOOT_BOOTLOADER_MAGIC     0x2BADB002
+
+/* The symbol table for a.out.  */
+typedef struct
+{
+  unsigned long tabsize;
+  unsigned long strsize;
+  unsigned long addr;
+  unsigned long reserved;
+} aout_symbol_table_t;
+
+/* The section header table for ELF.  */
+typedef struct
+{
+  unsigned long num;
+  unsigned long size;
+  unsigned long addr;
+  unsigned long shndx;
+} elf_section_header_table_t;
+
+/* The Multiboot information.  */
+typedef struct
+{
+  unsigned long flags;
+  unsigned long mem_lower;
+  unsigned long mem_upper;
+  unsigned long boot_device;
+  unsigned long cmdline;
+  unsigned long mods_count;
+  unsigned long mods_addr;
+  union
+  {
+    aout_symbol_table_t aout_sym;
+    elf_section_header_table_t elf_sec;
+  } u;
+  unsigned long mmap_length;
+  unsigned long mmap_addr;
+} multiboot_info_t;
+
+/* The module structure.  */
+typedef struct
+{
+  unsigned long mod_start;
+  unsigned long mod_end;
+  unsigned long string;
+  unsigned long reserved;
+} module_t;
+
+/* The memory map. Be careful that the offset 0 is base_addr_low
+   but no size.  */
+typedef struct
+{
+  unsigned long size;
+  unsigned long base_addr_low;
+  unsigned long base_addr_high;
+  unsigned long length_low;
+  unsigned long length_high;
+  unsigned long type;
+} memory_map_t;
+
+#endif /* __MULTIBOOT_H__ */
diff --git a/xen/include/xen/net_headers.h b/xen/include/xen/net_headers.h
new file mode 100644 (file)
index 0000000..368f8db
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * net_headers.h
+ *
+ * This is a compilation of various network headers, to facilitate
+ * access in Xen, which is generally quite simple and doesn't need
+ * all the bloat of extra defines and so on.
+ *
+ * Pretty much everything here is pulled from ip.h, tcp.h, and if_eth.h
+ *
+ * Reduced, congealed, and otherwise munged by akw. 
+ * 
+ * Original authors:
+ * 
+ *    Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> (ip.h, tcp.h, udp.h)
+ *
+ *    (if_arp.h):
+ *    Original taken from Berkeley UNIX 4.3, (c) UCB 1986-1988
+ *    Portions taken from the KA9Q/NOS (v2.00m PA0GRI) source.
+ *    Ross Biro, <bir7@leland.Stanford.Edu>
+ *    Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *    Florian La Roche,
+ *    Jonathan Layes <layes@loran.com>
+ *    Arnaldo Carvalho de Melo <acme@conectiva.com.br> ARPHRD_HWX25
+ *
+ * Original legalese:
+ *
+ *    This program is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU General Public License
+ *    as published by the Free Software Foundation; either version
+ *    2 of the License, or (at your option) any later version.
+ */
+
+#ifndef __NET_HEADERS_H__
+#define __NET_HEADERS_H__
+
+#include <xen/types.h>
+#include <asm/byteorder.h>
+#include <xen/if_ether.h> 
+
+/* from ip.h */
+
+struct iphdr {
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+    __u8    ihl:4,
+        version:4;
+#elif defined (__BIG_ENDIAN_BITFIELD)
+    __u8    version:4,
+        ihl:4;
+#else
+#error  "Please fix <asm/byteorder.h>"
+#endif
+    __u8    tos;
+    __u16   tot_len;
+    __u16   id;
+    __u16   frag_off;
+    __u8    ttl;
+    __u8    protocol;
+    __u16   check;
+    __u32   saddr;
+    __u32   daddr;
+    /*The options start here. */
+};
+
+/* from tcp.h */
+
+struct tcphdr {
+    __u16   source;
+    __u16   dest;
+    __u32   seq;
+    __u32   ack_seq;
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+    __u16   res1:4,
+        doff:4,
+        fin:1,
+        syn:1,
+        rst:1,
+        psh:1,
+        ack:1,
+        urg:1,
+        ece:1,
+        cwr:1;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+    __u16   doff:4,
+        res1:4,
+        cwr:1,
+        ece:1,
+        urg:1,
+        ack:1,
+        psh:1,
+        rst:1,
+        syn:1,
+        fin:1;
+#else
+#error  "Adjust your <asm/byteorder.h> defines"
+#endif
+    __u16   window;
+    __u16   check;
+    __u16   urg_ptr;
+};
+
+/* From udp.h */
+
+struct udphdr {
+    __u16   source;
+    __u16   dest;
+    __u16   len;
+    __u16   check;
+};
+
+/* from if_arp.h */
+
+struct arphdr
+{
+    __u16   ar_hrd;                      /* format of hardware address    */
+    __u16   ar_pro;                      /* format of protocol address    */
+    __u8    ar_hln;                      /* length of hardware address    */
+    __u8    ar_pln;                      /* length of protocol address    */
+    __u16   ar_op;                       /* ARP opcode (command)          */
+
+    /* This next bit is variable sized, and as coded only allows ETH-IPv4 */
+    __u8    ar_sha[ETH_ALEN];            /* sender hardware address       */
+    __u8    ar_sip[4];                   /* sender IP address             */
+    __u8    ar_tha[ETH_ALEN];            /* target hardware address       */
+    __u8    ar_tip[4];                   /* target IP address             */
+};
+
+
+#endif /* __NET_HEADERS_H__ */
diff --git a/xen/include/xen/netdevice.h b/xen/include/xen/netdevice.h
new file mode 100644 (file)
index 0000000..727591b
--- /dev/null
@@ -0,0 +1,616 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Definitions for the Interfaces handler.
+ *
+ * Version:    @(#)dev.h       1.0.10  08/12/93
+ *
+ * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *             Corey Minyard <wf-rch!minyard@relay.EU.net>
+ *             Donald J. Becker, <becker@cesdis.gsfc.nasa.gov>
+ *             Alan Cox, <Alan.Cox@linux.org>
+ *             Bjorn Ekwall. <bj0rn@blox.se>
+ *              Pekka Riikonen <priikone@poseidon.pspt.fi>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ *
+ *             Moved to /usr/include/linux for NET3
+ */
+#ifndef _LINUX_NETDEVICE_H
+#define _LINUX_NETDEVICE_H
+
+#include <xen/if.h>
+#include <xen/if_ether.h>
+#include <xen/if_packet.h>
+#include <xen/sched.h>
+#include <xen/interrupt.h>
+#include <xen/skbuff.h>
+#include <asm/atomic.h>
+#include <asm/cache.h>
+#include <asm/byteorder.h>
+
+#ifdef __KERNEL__
+#include <xen/config.h>
+
+struct vlan_group;
+
+extern struct skb_completion_queues {
+    struct sk_buff_head rx;  /* Packets received in interrupt context.   */
+    struct sk_buff     *tx;  /* Tx buffers defunct in interrupt context. */
+} skb_queue[NR_CPUS] __cacheline_aligned;
+
+/* Backlog congestion levels */
+#define NET_RX_SUCCESS         0   /* keep 'em coming, baby */
+#define NET_RX_DROP            1  /* packet dropped */
+
+#endif
+
+#define MAX_ADDR_LEN   8               /* Largest hardware address length */
+
+/*
+ *     Network device statistics. Akin to the 2.0 ether stats but
+ *     with byte counters.
+ */
+struct net_device_stats
+{
+       unsigned long   rx_packets;             /* total packets received       */
+       unsigned long   tx_packets;             /* total packets transmitted    */
+       unsigned long   rx_bytes;               /* total bytes received         */
+       unsigned long   tx_bytes;               /* total bytes transmitted      */
+       unsigned long   rx_errors;              /* bad packets received         */
+       unsigned long   tx_errors;              /* packet transmit problems     */
+       unsigned long   rx_dropped;             /* no space in linux buffers    */
+       unsigned long   tx_dropped;             /* no space available in linux  */
+       unsigned long   multicast;              /* multicast packets received   */
+       unsigned long   collisions;
+
+       /* detailed rx_errors: */
+       unsigned long   rx_length_errors;
+       unsigned long   rx_over_errors;         /* receiver ring buff overflow  */
+       unsigned long   rx_crc_errors;          /* recved pkt with crc error    */
+       unsigned long   rx_frame_errors;        /* recv'd frame alignment error */
+       unsigned long   rx_fifo_errors;         /* recv'r fifo overrun          */
+       unsigned long   rx_missed_errors;       /* receiver missed packet       */
+
+       /* detailed tx_errors */
+       unsigned long   tx_aborted_errors;
+       unsigned long   tx_carrier_errors;
+       unsigned long   tx_fifo_errors;
+       unsigned long   tx_heartbeat_errors;
+       unsigned long   tx_window_errors;
+       
+       /* for cslip etc */
+       unsigned long   rx_compressed;
+       unsigned long   tx_compressed;
+};
+
+
+/* Media selection options. */
+enum {
+        IF_PORT_UNKNOWN = 0,
+        IF_PORT_10BASE2,
+        IF_PORT_10BASET,
+        IF_PORT_AUI,
+        IF_PORT_100BASET,
+        IF_PORT_100BASETX,
+        IF_PORT_100BASEFX
+};
+
+#ifdef __KERNEL__
+
+extern const char *if_port_text[];
+
+#include <xen/cache.h>
+#include <xen/skbuff.h>
+
+struct neighbour;
+struct neigh_parms;
+struct sk_buff;
+
+struct netif_rx_stats
+{
+       unsigned total;
+       unsigned dropped;
+       unsigned time_squeeze;
+       unsigned throttled;
+       unsigned fastroute_hit;
+       unsigned fastroute_success;
+       unsigned fastroute_defer;
+       unsigned fastroute_deferred_out;
+       unsigned fastroute_latency_reduction;
+       unsigned cpu_collision;
+} __attribute__ ((__aligned__(SMP_CACHE_BYTES)));
+
+extern struct netif_rx_stats netdev_rx_stat[];
+
+
+/*
+ *     We tag multicasts with these structures.
+ */
+struct dev_mc_list
+{      
+       struct dev_mc_list      *next;
+       __u8                    dmi_addr[MAX_ADDR_LEN];
+       unsigned char           dmi_addrlen;
+       int                     dmi_users;
+       int                     dmi_gusers;
+};
+
+struct hh_cache
+{
+       struct hh_cache *hh_next;       /* Next entry                        */
+       atomic_t        hh_refcnt;      /* number of users                   */
+       unsigned short  hh_type;        /* protocol identifier, f.e ETH_P_IP
+                                         *  NOTE:  For VLANs, this will be the
+                                         *  encapuslated type. --BLG
+                                         */
+       int             hh_len;         /* length of header */
+       int             (*hh_output)(struct sk_buff *skb);
+       rwlock_t        hh_lock;
+       /* cached hardware header; allow for machine alignment needs.        */
+       unsigned long   hh_data[16/sizeof(unsigned long)];
+};
+
+/* These flag bits are private to the generic network queueing
+ * layer, they may not be explicitly referenced by any other
+ * code.
+ */
+
+enum netdev_state_t
+{
+       __LINK_STATE_XOFF=0,
+       __LINK_STATE_START,
+       __LINK_STATE_PRESENT,
+       __LINK_STATE_NOCARRIER
+};
+
+
+/*
+ *     The DEVICE structure.
+ *     Actually, this whole structure is a big mistake.  It mixes I/O
+ *     data with strictly "high-level" data, and it has to know about
+ *     almost every data structure used in the INET module.
+ *
+ *     FIXME: cleanup struct net_device such that network protocol info
+ *     moves out.
+ */
+
+struct net_device
+{
+       /*
+        * This is the first field of the "visible" part of this structure
+        * (i.e. as seen by users in the "Space.c" file).  It is the name
+        * the interface.
+        */
+       char                    name[IFNAMSIZ];
+
+       /*
+        *      I/O specific fields
+        *      FIXME: Merge these and struct ifmap into one
+        */
+       unsigned long           rmem_end;       /* shmem "recv" end     */
+       unsigned long           rmem_start;     /* shmem "recv" start   */
+       unsigned long           mem_end;        /* shared mem end       */
+       unsigned long           mem_start;      /* shared mem start     */
+       unsigned long           base_addr;      /* device I/O address   */
+       unsigned int            irq;            /* device IRQ number    */
+
+       /*
+        *      Some hardware also needs these fields, but they are not
+        *      part of the usual set specified in Space.c.
+        */
+
+       unsigned char           if_port;        /* Selectable AUI, TP,..*/
+       unsigned char           dma;            /* DMA channel          */
+
+       unsigned long           state;
+
+       struct net_device       *next;
+       
+       /* The device initialization function. Called only once. */
+       int                     (*init)(struct net_device *dev);
+
+       /* ------- Fields preinitialized in Space.c finish here ------- */
+
+       struct net_device       *next_sched;
+
+       /* Interface index. Unique device identifier    */
+       int                     ifindex;
+       int                     iflink;
+
+
+       struct net_device_stats* (*get_stats)(struct net_device *dev);
+       struct iw_statistics*   (*get_wireless_stats)(struct net_device *dev);
+
+       /*
+        * This marks the end of the "visible" part of the structure. All
+        * fields hereafter are internal to the system, and may change at
+        * will (read: may be cleaned up at will).
+        */
+
+       /* These may be needed for future network-power-down code. */
+       unsigned long           trans_start;    /* Time (in jiffies) of last Tx */
+       unsigned long           last_rx;        /* Time of last Rx      */
+
+       unsigned short          flags;  /* interface flags (a la BSD)   */
+       unsigned short          gflags;
+        unsigned short          priv_flags; /* Like 'flags' but invisible to userspace. */
+        unsigned short          unused_alignment_fixer; /* Because we need priv_flags,
+                                                         * and we want to be 32-bit aligned.
+                                                         */
+
+       unsigned                mtu;    /* interface MTU value          */
+       unsigned short          type;   /* interface hardware type      */
+       unsigned short          hard_header_len;        /* hardware hdr length  */
+       void                    *priv;  /* pointer to private data      */
+
+       struct net_device       *master; /* Pointer to master device of a group,
+                                         * which this device is member of.
+                                         */
+
+       /* Interface address info. */
+       unsigned char           broadcast[MAX_ADDR_LEN];        /* hw bcast add */
+       unsigned char           dev_addr[MAX_ADDR_LEN]; /* hw address   */
+       unsigned char           addr_len;       /* hardware address length      */
+
+       struct dev_mc_list      *mc_list;       /* Multicast mac addresses      */
+       int                     mc_count;       /* Number of installed mcasts   */
+       int                     promiscuity;
+       int                     allmulti;
+
+       int                     watchdog_timeo;
+       struct timer_list       watchdog_timer;
+
+       /* Protocol specific pointers */
+       
+       void                    *atalk_ptr;     /* AppleTalk link       */
+       void                    *ip_ptr;        /* IPv4 specific data   */  
+       void                    *dn_ptr;        /* DECnet specific data */
+       void                    *ip6_ptr;       /* IPv6 specific data */
+       void                    *ec_ptr;        /* Econet specific data */
+
+       /* hard_start_xmit synchronizer */
+       spinlock_t              xmit_lock;
+       /* cpu id of processor entered to hard_start_xmit or -1,
+          if nobody entered there.
+        */
+       int                     xmit_lock_owner;
+       /* device queue lock */
+       spinlock_t              queue_lock;
+       /* Number of references to this device */
+       atomic_t                refcnt;
+       /* The flag marking that device is unregistered, but held by an user */
+       int                     deadbeaf;
+
+       /* Net device features */
+       int                     features;
+#define NETIF_F_SG             1       /* Scatter/gather IO. */
+#define NETIF_F_IP_CSUM                2       /* Can checksum only TCP/UDP over IPv4. */
+#define NETIF_F_NO_CSUM                4       /* Does not require checksum. F.e. loopack. */
+#define NETIF_F_HW_CSUM                8       /* Can checksum all the packets. */
+#define NETIF_F_DYNALLOC       16      /* Self-dectructable device. */
+#define NETIF_F_HIGHDMA                32      /* Can DMA to high memory. */
+#define NETIF_F_FRAGLIST       64      /* Scatter/gather IO. */
+#define NETIF_F_HW_VLAN_TX      128     /* Transmit VLAN hw acceleration */
+#define NETIF_F_HW_VLAN_RX      256     /* Receive VLAN hw acceleration */
+#define NETIF_F_HW_VLAN_FILTER  512     /* Receive filtering on VLAN */
+#define NETIF_F_VLAN_CHALLENGED 1024    /* Device cannot handle VLAN packets */
+
+       /* Called after device is detached from network. */
+       void                    (*uninit)(struct net_device *dev);
+       /* Called after last user reference disappears. */
+       void                    (*destructor)(struct net_device *dev);
+
+       /* Pointers to interface service routines.      */
+       int                     (*open)(struct net_device *dev);
+       int                     (*stop)(struct net_device *dev);
+       int                     (*hard_start_xmit) (struct sk_buff *skb,
+                                                   struct net_device *dev);
+#if 0
+       int                     (*poll) (struct net_device *dev, int *quota); /* XXX IAP */
+#endif
+       int                     (*hard_header) (struct sk_buff *skb,
+                                               struct net_device *dev,
+                                               unsigned short type,
+                                               void *daddr,
+                                               void *saddr,
+                                               unsigned len);
+       int                     (*rebuild_header)(struct sk_buff *skb);
+#define HAVE_MULTICAST                  
+       void                    (*set_multicast_list)(struct net_device *dev);
+#define HAVE_SET_MAC_ADDR               
+       int                     (*set_mac_address)(struct net_device *dev,
+                                                  void *addr);
+#define HAVE_PRIVATE_IOCTL
+       int                     (*do_ioctl)(struct net_device *dev,
+                                           struct ifreq *ifr, int cmd);
+#define HAVE_SET_CONFIG
+       int                     (*set_config)(struct net_device *dev,
+                                             struct ifmap *map);
+#define HAVE_HEADER_CACHE
+       int                     (*hard_header_cache)(struct neighbour *neigh,
+                                                    struct hh_cache *hh);
+       void                    (*header_cache_update)(struct hh_cache *hh,
+                                                      struct net_device *dev,
+                                                      unsigned char *  haddr);
+#define HAVE_CHANGE_MTU
+       int                     (*change_mtu)(struct net_device *dev, int new_mtu);
+
+#define HAVE_TX_TIMEOUT
+       void                    (*tx_timeout) (struct net_device *dev);
+
+        void                    (*vlan_rx_register)(struct net_device *dev,
+                                                    struct vlan_group *grp);
+        void                    (*vlan_rx_add_vid)(struct net_device *dev,
+                                                   unsigned short vid);
+        void                    (*vlan_rx_kill_vid)(struct net_device *dev,
+                                                    unsigned short vid);
+
+       int                     (*hard_header_parse)(struct sk_buff *skb,
+                                                    unsigned char *haddr);
+       int                     (*neigh_setup)(struct net_device *dev, struct neigh_parms *);
+//     int                     (*accept_fastpath)(struct net_device *, struct dst_entry*);
+
+       /* open/release and usage marking */
+       struct module *owner;
+
+       /* bridge stuff */
+       struct net_bridge_port  *br_port;
+};
+
+
+struct packet_type 
+{
+       unsigned short          type;   /* This is really htons(ether_type).    */
+       struct net_device               *dev;   /* NULL is wildcarded here              */
+       int                     (*func) (struct sk_buff *, struct net_device *,
+                                        struct packet_type *);
+       void                    *data;  /* Private to the packet type           */
+       struct packet_type      *next;
+};
+
+
+#include <xen/interrupt.h>
+
+extern struct net_device               *dev_base;      /* All devices */
+extern rwlock_t                                dev_base_lock;  /* Device list lock */
+
+extern int                     netdev_boot_setup_add(char *name, struct ifmap *map);
+extern int                     netdev_boot_setup_check(struct net_device *dev);
+extern struct net_device    *dev_getbyhwaddr(unsigned short type, char *hwaddr);
+extern void            dev_add_pack(struct packet_type *pt);
+extern void            dev_remove_pack(struct packet_type *pt);
+extern int             dev_get(const char *name);
+extern struct net_device       *dev_get_by_name(const char *name);
+extern struct net_device       *__dev_get_by_name(const char *name);
+extern struct net_device       *dev_alloc(const char *name, int *err);
+extern int             dev_alloc_name(struct net_device *dev, const char *name);
+extern int             dev_open(struct net_device *dev);
+extern int             dev_close(struct net_device *dev);
+extern int             register_netdevice(struct net_device *dev);
+extern int             unregister_netdevice(struct net_device *dev);
+extern void dev_shutdown(struct net_device *dev);
+extern void dev_activate(struct net_device *dev);
+extern void dev_deactivate(struct net_device *dev);
+extern void dev_init_scheduler(struct net_device *dev);
+extern int             dev_new_index(void);
+extern struct net_device       *dev_get_by_index(int ifindex);
+extern struct net_device       *__dev_get_by_index(int ifindex);
+extern int             dev_restart(struct net_device *dev);
+
+typedef int gifconf_func_t(struct net_device * dev, char * bufptr, int len);
+extern int             register_gifconf(unsigned int family, gifconf_func_t * gifconf);
+static inline int unregister_gifconf(unsigned int family)
+{
+       return register_gifconf(family, 0);
+}
+
+extern struct tasklet_struct net_tx_tasklet;
+
+extern struct list_head net_schedule_list;
+extern spinlock_t net_schedule_list_lock;
+
+#define HAVE_NETIF_QUEUE
+
+static inline void __netif_schedule(struct net_device *dev)
+{
+       tasklet_schedule(&net_tx_tasklet);
+}
+
+static inline void netif_schedule(struct net_device *dev)
+{
+       if (!test_bit(__LINK_STATE_XOFF, &dev->state))
+               __netif_schedule(dev);
+}
+
+static inline void netif_start_queue(struct net_device *dev)
+{
+       clear_bit(__LINK_STATE_XOFF, &dev->state);
+}
+
+static inline void netif_wake_queue(struct net_device *dev)
+{
+       if (test_and_clear_bit(__LINK_STATE_XOFF, &dev->state))
+               __netif_schedule(dev);
+}
+
+static inline void netif_stop_queue(struct net_device *dev)
+{
+       set_bit(__LINK_STATE_XOFF, &dev->state);
+}
+
+static inline int netif_queue_stopped(struct net_device *dev)
+{
+       return test_bit(__LINK_STATE_XOFF, &dev->state);
+}
+
+static inline int netif_running(struct net_device *dev)
+{
+       return test_bit(__LINK_STATE_START, &dev->state);
+}
+
+
+/* Use this variant when it is known for sure that it
+ * is executing from interrupt context.
+ */
+static inline void dev_kfree_skb_irq(struct sk_buff *skb)
+{
+       int cpu = smp_processor_id();
+       unsigned long flags;
+       local_irq_save(flags);
+       skb->next = skb_queue[cpu].tx;
+       skb_queue[cpu].tx = skb;
+       __cpu_raise_softirq(cpu, NET_TX_SOFTIRQ);
+       local_irq_restore(flags);
+}
+
+/* Use this variant in places where it could be invoked
+ * either from interrupt or non-interrupt context.
+ */
+static inline void dev_kfree_skb_any(struct sk_buff *skb)
+{
+       if (in_irq())
+               dev_kfree_skb_irq(skb);
+       else
+               dev_kfree_skb(skb);
+}
+
+extern void            net_call_rx_atomic(void (*fn)(void));
+extern int             netif_rx(struct sk_buff *skb);
+extern int             dev_ioctl(unsigned int cmd, void *);
+extern int             dev_change_flags(struct net_device *, unsigned);
+extern void            dev_init(void);
+
+extern int netdev_finish_unregister(struct net_device *dev);
+
+static inline void dev_put(struct net_device *dev)
+{
+       if (atomic_dec_and_test(&dev->refcnt))
+               netdev_finish_unregister(dev);
+}
+
+#define __dev_put(dev) atomic_dec(&(dev)->refcnt)
+#define dev_hold(dev) atomic_inc(&(dev)->refcnt)
+
+/* Carrier loss detection, dial on demand. The functions netif_carrier_on
+ * and _off may be called from IRQ context, but it is caller
+ * who is responsible for serialization of these calls.
+ */
+
+static inline int netif_carrier_ok(struct net_device *dev)
+{
+       return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
+}
+
+extern void __netdev_watchdog_up(struct net_device *dev);
+
+static inline void netif_carrier_on(struct net_device *dev)
+{
+       clear_bit(__LINK_STATE_NOCARRIER, &dev->state);
+       if (netif_running(dev))
+               __netdev_watchdog_up(dev);
+}
+
+static inline void netif_carrier_off(struct net_device *dev)
+{
+       set_bit(__LINK_STATE_NOCARRIER, &dev->state);
+}
+
+/* Hot-plugging. */
+static inline int netif_device_present(struct net_device *dev)
+{
+       return test_bit(__LINK_STATE_PRESENT, &dev->state);
+}
+
+static inline void netif_device_detach(struct net_device *dev)
+{
+       if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) &&
+           netif_running(dev)) {
+               netif_stop_queue(dev);
+       }
+}
+
+static inline void netif_device_attach(struct net_device *dev)
+{
+       if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) &&
+           netif_running(dev)) {
+               netif_wake_queue(dev);
+               __netdev_watchdog_up(dev);
+       }
+}
+
+/*
+ * Network interface message level settings
+ */
+#define HAVE_NETIF_MSG 1
+
+enum {
+       NETIF_MSG_DRV           = 0x0001,
+       NETIF_MSG_PROBE         = 0x0002,
+       NETIF_MSG_LINK          = 0x0004,
+       NETIF_MSG_TIMER         = 0x0008,
+       NETIF_MSG_IFDOWN        = 0x0010,
+       NETIF_MSG_IFUP          = 0x0020,
+       NETIF_MSG_RX_ERR        = 0x0040,
+       NETIF_MSG_TX_ERR        = 0x0080,
+       NETIF_MSG_TX_QUEUED     = 0x0100,
+       NETIF_MSG_INTR          = 0x0200,
+       NETIF_MSG_TX_DONE       = 0x0400,
+       NETIF_MSG_RX_STATUS     = 0x0800,
+       NETIF_MSG_PKTDATA       = 0x1000,
+};
+
+#define netif_msg_drv(p)       ((p)->msg_enable & NETIF_MSG_DRV)
+#define netif_msg_probe(p)     ((p)->msg_enable & NETIF_MSG_PROBE)
+#define netif_msg_link(p)      ((p)->msg_enable & NETIF_MSG_LINK)
+#define netif_msg_timer(p)     ((p)->msg_enable & NETIF_MSG_TIMER)
+#define netif_msg_ifdown(p)    ((p)->msg_enable & NETIF_MSG_IFDOWN)
+#define netif_msg_ifup(p)      ((p)->msg_enable & NETIF_MSG_IFUP)
+#define netif_msg_rx_err(p)    ((p)->msg_enable & NETIF_MSG_RX_ERR)
+#define netif_msg_tx_err(p)    ((p)->msg_enable & NETIF_MSG_TX_ERR)
+#define netif_msg_tx_queued(p) ((p)->msg_enable & NETIF_MSG_TX_QUEUED)
+#define netif_msg_intr(p)      ((p)->msg_enable & NETIF_MSG_INTR)
+#define netif_msg_tx_done(p)   ((p)->msg_enable & NETIF_MSG_TX_DONE)
+#define netif_msg_rx_status(p) ((p)->msg_enable & NETIF_MSG_RX_STATUS)
+#define netif_msg_pktdata(p)   ((p)->msg_enable & NETIF_MSG_PKTDATA)
+
+/* These functions live elsewhere (drivers/net/net_init.c, but related) */
+
+extern void            ether_setup(struct net_device *dev);
+extern void            fddi_setup(struct net_device *dev);
+extern void            tr_setup(struct net_device *dev);
+extern void            fc_setup(struct net_device *dev);
+extern void            fc_freedev(struct net_device *dev);
+/* Support for loadable net-drivers */
+extern int             register_netdev(struct net_device *dev);
+extern void            unregister_netdev(struct net_device *dev);
+/* Functions used for multicast support */
+extern void            dev_mc_upload(struct net_device *dev);
+extern int             dev_mc_delete(struct net_device *dev, void *addr, int alen, int all);
+extern int             dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly);
+extern void            dev_mc_discard(struct net_device *dev);
+extern void            dev_set_promiscuity(struct net_device *dev, int inc);
+extern void            dev_set_allmulti(struct net_device *dev, int inc);
+extern void            netdev_state_change(struct net_device *dev);
+/* Load a device via the kmod */
+extern void            dev_load(const char *name);
+extern void            dev_mcast_init(void);
+extern int             netdev_register_fc(struct net_device *dev, void (*stimul)(struct net_device *dev));
+extern void            netdev_unregister_fc(int bit);
+extern unsigned long   netdev_fc_xoff;
+extern int             netdev_set_master(struct net_device *dev, struct net_device *master);
+extern struct sk_buff * skb_checksum_help(struct sk_buff *skb);
+
+extern void alert_slow_netdevice(struct net_device *dev, char *nictype);
+
+#endif /* __KERNEL__ */
+
+#endif /* _LINUX_DEV_H */
diff --git a/xen/include/xen/notifier.h b/xen/include/xen/notifier.h
new file mode 100644 (file)
index 0000000..d212ee0
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ *     Routines to manage notifier chains for passing status changes to any
+ *     interested routines. We need this instead of hard coded call lists so
+ *     that modules can poke their nose into the innards. The network devices
+ *     needed them so here they are for the rest of you.
+ *
+ *                             Alan Cox <Alan.Cox@linux.org>
+ */
+#ifndef _LINUX_NOTIFIER_H
+#define _LINUX_NOTIFIER_H
+#include <xen/errno.h>
+
+struct notifier_block
+{
+       int (*notifier_call)(struct notifier_block *self, unsigned long, void *);
+       struct notifier_block *next;
+       int priority;
+};
+
+
+#ifdef __KERNEL__
+
+extern int notifier_chain_register(struct notifier_block **list, struct notifier_block *n);
+extern int notifier_chain_unregister(struct notifier_block **nl, struct notifier_block *n);
+extern int notifier_call_chain(struct notifier_block **n, unsigned long val, void *v);
+
+#define NOTIFY_DONE            0x0000          /* Don't care */
+#define NOTIFY_OK              0x0001          /* Suits me */
+#define NOTIFY_STOP_MASK       0x8000          /* Don't call further */
+#define NOTIFY_BAD             (NOTIFY_STOP_MASK|0x0002)       /* Bad/Veto action      */
+
+/*
+ *     Declared notifiers so far. I can imagine quite a few more chains
+ *     over time (eg laptop power reset chains, reboot chain (to clean 
+ *     device units up), device [un]mount chain, module load/unload chain,
+ *     low memory chain, screenblank chain (for plug in modular screenblankers) 
+ *     VC switch chains (for loadable kernel svgalib VC switch helpers) etc...
+ */
+/* netdevice notifier chain */
+#define NETDEV_UP      0x0001  /* For now you can't veto a device up/down */
+#define NETDEV_DOWN    0x0002
+#define NETDEV_REBOOT  0x0003  /* Tell a protocol stack a network interface
+                                  detected a hardware crash and restarted
+                                  - we can use this eg to kick tcp sessions
+                                  once done */
+#define NETDEV_CHANGE  0x0004  /* Notify device state change */
+#define NETDEV_REGISTER 0x0005
+#define NETDEV_UNREGISTER      0x0006
+#define NETDEV_CHANGEMTU       0x0007
+#define NETDEV_CHANGEADDR      0x0008
+#define NETDEV_GOING_DOWN      0x0009
+#define NETDEV_CHANGENAME      0x000A
+
+#define SYS_DOWN       0x0001  /* Notify of system down */
+#define SYS_RESTART    SYS_DOWN
+#define SYS_HALT       0x0002  /* Notify of system halt */
+#define SYS_POWER_OFF  0x0003  /* Notify of system power off */
+
+#define NETLINK_URELEASE       0x0001  /* Unicast netlink socket released */
+
+#endif /* __KERNEL__ */
+#endif /* _LINUX_NOTIFIER_H */
diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
new file mode 100644 (file)
index 0000000..d25d1ec
--- /dev/null
@@ -0,0 +1,812 @@
+/*
+ *     $Id: pci.h,v 1.87 1998/10/11 15:13:12 mj Exp $
+ *
+ *     PCI defines and function prototypes
+ *     Copyright 1994, Drew Eckhardt
+ *     Copyright 1997--1999 Martin Mares <mj@ucw.cz>
+ *
+ *     For more information, please consult the following manuals (look at
+ *     http://www.pcisig.com/ for how to get them):
+ *
+ *     PCI BIOS Specification
+ *     PCI Local Bus Specification
+ *     PCI to PCI Bridge Specification
+ *     PCI System Design Guide
+ */
+
+#ifndef LINUX_PCI_H
+#define LINUX_PCI_H
+
+/*
+ * Under PCI, each device has 256 bytes of configuration address space,
+ * of which the first 64 bytes are standardized as follows:
+ */
+#define PCI_VENDOR_ID          0x00    /* 16 bits */
+#define PCI_DEVICE_ID          0x02    /* 16 bits */
+#define PCI_COMMAND            0x04    /* 16 bits */
+#define  PCI_COMMAND_IO                0x1     /* Enable response in I/O space */
+#define  PCI_COMMAND_MEMORY    0x2     /* Enable response in Memory space */
+#define  PCI_COMMAND_MASTER    0x4     /* Enable bus mastering */
+#define  PCI_COMMAND_SPECIAL   0x8     /* Enable response to special cycles */
+#define  PCI_COMMAND_INVALIDATE        0x10    /* Use memory write and invalidate */
+#define  PCI_COMMAND_VGA_PALETTE 0x20  /* Enable palette snooping */
+#define  PCI_COMMAND_PARITY    0x40    /* Enable parity checking */
+#define  PCI_COMMAND_WAIT      0x80    /* Enable address/data stepping */
+#define  PCI_COMMAND_SERR      0x100   /* Enable SERR */
+#define  PCI_COMMAND_FAST_BACK 0x200   /* Enable back-to-back writes */
+
+#define PCI_STATUS             0x06    /* 16 bits */
+#define  PCI_STATUS_CAP_LIST   0x10    /* Support Capability List */
+#define  PCI_STATUS_66MHZ      0x20    /* Support 66 Mhz PCI 2.1 bus */
+#define  PCI_STATUS_UDF                0x40    /* Support User Definable Features [obsolete] */
+#define  PCI_STATUS_FAST_BACK  0x80    /* Accept fast-back to back */
+#define  PCI_STATUS_PARITY     0x100   /* Detected parity error */
+#define  PCI_STATUS_DEVSEL_MASK        0x600   /* DEVSEL timing */
+#define  PCI_STATUS_DEVSEL_FAST        0x000   
+#define  PCI_STATUS_DEVSEL_MEDIUM 0x200
+#define  PCI_STATUS_DEVSEL_SLOW 0x400
+#define  PCI_STATUS_SIG_TARGET_ABORT 0x800 /* Set on target abort */
+#define  PCI_STATUS_REC_TARGET_ABORT 0x1000 /* Master ack of " */
+#define  PCI_STATUS_REC_MASTER_ABORT 0x2000 /* Set on master abort */
+#define  PCI_STATUS_SIG_SYSTEM_ERROR 0x4000 /* Set when we drive SERR */
+#define  PCI_STATUS_DETECTED_PARITY 0x8000 /* Set on parity error */
+
+#define PCI_CLASS_REVISION     0x08    /* High 24 bits are class, low 8
+                                          revision */
+#define PCI_REVISION_ID         0x08    /* Revision ID */
+#define PCI_CLASS_PROG          0x09    /* Reg. Level Programming Interface */
+#define PCI_CLASS_DEVICE        0x0a    /* Device class */
+
+#define PCI_CACHE_LINE_SIZE    0x0c    /* 8 bits */
+#define PCI_LATENCY_TIMER      0x0d    /* 8 bits */
+#define PCI_HEADER_TYPE                0x0e    /* 8 bits */
+#define  PCI_HEADER_TYPE_NORMAL        0
+#define  PCI_HEADER_TYPE_BRIDGE 1
+#define  PCI_HEADER_TYPE_CARDBUS 2
+
+#define PCI_BIST               0x0f    /* 8 bits */
+#define  PCI_BIST_CODE_MASK    0x0f    /* Return result */
+#define  PCI_BIST_START                0x40    /* 1 to start BIST, 2 secs or less */
+#define  PCI_BIST_CAPABLE      0x80    /* 1 if BIST capable */
+
+/*
+ * Base addresses specify locations in memory or I/O space.
+ * Decoded size can be determined by writing a value of 
+ * 0xffffffff to the register, and reading it back.  Only 
+ * 1 bits are decoded.
+ */
+#define PCI_BASE_ADDRESS_0     0x10    /* 32 bits */
+#define PCI_BASE_ADDRESS_1     0x14    /* 32 bits [htype 0,1 only] */
+#define PCI_BASE_ADDRESS_2     0x18    /* 32 bits [htype 0 only] */
+#define PCI_BASE_ADDRESS_3     0x1c    /* 32 bits */
+#define PCI_BASE_ADDRESS_4     0x20    /* 32 bits */
+#define PCI_BASE_ADDRESS_5     0x24    /* 32 bits */
+#define  PCI_BASE_ADDRESS_SPACE        0x01    /* 0 = memory, 1 = I/O */
+#define  PCI_BASE_ADDRESS_SPACE_IO 0x01
+#define  PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
+#define  PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06
+#define  PCI_BASE_ADDRESS_MEM_TYPE_32  0x00    /* 32 bit address */
+#define  PCI_BASE_ADDRESS_MEM_TYPE_1M  0x02    /* Below 1M [obsolete] */
+#define  PCI_BASE_ADDRESS_MEM_TYPE_64  0x04    /* 64 bit address */
+#define  PCI_BASE_ADDRESS_MEM_PREFETCH 0x08    /* prefetchable? */
+#define  PCI_BASE_ADDRESS_MEM_MASK     (~0x0fUL)
+#define  PCI_BASE_ADDRESS_IO_MASK      (~0x03UL)
+/* bit 1 is reserved if address_space = 1 */
+
+/* Header type 0 (normal devices) */
+#define PCI_CARDBUS_CIS                0x28
+#define PCI_SUBSYSTEM_VENDOR_ID        0x2c
+#define PCI_SUBSYSTEM_ID       0x2e  
+#define PCI_ROM_ADDRESS                0x30    /* Bits 31..11 are address, 10..1 reserved */
+#define  PCI_ROM_ADDRESS_ENABLE        0x01
+#define PCI_ROM_ADDRESS_MASK   (~0x7ffUL)
+
+#define PCI_CAPABILITY_LIST    0x34    /* Offset of first capability list entry */
+
+/* 0x35-0x3b are reserved */
+#define PCI_INTERRUPT_LINE     0x3c    /* 8 bits */
+#define PCI_INTERRUPT_PIN      0x3d    /* 8 bits */
+#define PCI_MIN_GNT            0x3e    /* 8 bits */
+#define PCI_MAX_LAT            0x3f    /* 8 bits */
+
+/* Header type 1 (PCI-to-PCI bridges) */
+#define PCI_PRIMARY_BUS                0x18    /* Primary bus number */
+#define PCI_SECONDARY_BUS      0x19    /* Secondary bus number */
+#define PCI_SUBORDINATE_BUS    0x1a    /* Highest bus number behind the bridge */
+#define PCI_SEC_LATENCY_TIMER  0x1b    /* Latency timer for secondary interface */
+#define PCI_IO_BASE            0x1c    /* I/O range behind the bridge */
+#define PCI_IO_LIMIT           0x1d
+#define  PCI_IO_RANGE_TYPE_MASK        0x0fUL  /* I/O bridging type */
+#define  PCI_IO_RANGE_TYPE_16  0x00
+#define  PCI_IO_RANGE_TYPE_32  0x01
+#define  PCI_IO_RANGE_MASK     (~0x0fUL)
+#define PCI_SEC_STATUS         0x1e    /* Secondary status register, only bit 14 used */
+#define PCI_MEMORY_BASE                0x20    /* Memory range behind */
+#define PCI_MEMORY_LIMIT       0x22
+#define  PCI_MEMORY_RANGE_TYPE_MASK 0x0fUL
+#define  PCI_MEMORY_RANGE_MASK (~0x0fUL)
+#define PCI_PREF_MEMORY_BASE   0x24    /* Prefetchable memory range behind */
+#define PCI_PREF_MEMORY_LIMIT  0x26
+#define  PCI_PREF_RANGE_TYPE_MASK 0x0fUL
+#define  PCI_PREF_RANGE_TYPE_32        0x00
+#define  PCI_PREF_RANGE_TYPE_64        0x01
+#define  PCI_PREF_RANGE_MASK   (~0x0fUL)
+#define PCI_PREF_BASE_UPPER32  0x28    /* Upper half of prefetchable memory range */
+#define PCI_PREF_LIMIT_UPPER32 0x2c
+#define PCI_IO_BASE_UPPER16    0x30    /* Upper half of I/O addresses */
+#define PCI_IO_LIMIT_UPPER16   0x32
+/* 0x34 same as for htype 0 */
+/* 0x35-0x3b is reserved */
+#define PCI_ROM_ADDRESS1       0x38    /* Same as PCI_ROM_ADDRESS, but for htype 1 */
+/* 0x3c-0x3d are same as for htype 0 */
+#define PCI_BRIDGE_CONTROL     0x3e
+#define  PCI_BRIDGE_CTL_PARITY 0x01    /* Enable parity detection on secondary interface */
+#define  PCI_BRIDGE_CTL_SERR   0x02    /* The same for SERR forwarding */
+#define  PCI_BRIDGE_CTL_NO_ISA 0x04    /* Disable bridging of ISA ports */
+#define  PCI_BRIDGE_CTL_VGA    0x08    /* Forward VGA addresses */
+#define  PCI_BRIDGE_CTL_MASTER_ABORT 0x20  /* Report master aborts */
+#define  PCI_BRIDGE_CTL_BUS_RESET 0x40 /* Secondary bus reset */
+#define  PCI_BRIDGE_CTL_FAST_BACK 0x80 /* Fast Back2Back enabled on secondary interface */
+
+/* Header type 2 (CardBus bridges) */
+#define PCI_CB_CAPABILITY_LIST 0x14
+/* 0x15 reserved */
+#define PCI_CB_SEC_STATUS      0x16    /* Secondary status */
+#define PCI_CB_PRIMARY_BUS     0x18    /* PCI bus number */
+#define PCI_CB_CARD_BUS                0x19    /* CardBus bus number */
+#define PCI_CB_SUBORDINATE_BUS 0x1a    /* Subordinate bus number */
+#define PCI_CB_LATENCY_TIMER   0x1b    /* CardBus latency timer */
+#define PCI_CB_MEMORY_BASE_0   0x1c
+#define PCI_CB_MEMORY_LIMIT_0  0x20
+#define PCI_CB_MEMORY_BASE_1   0x24
+#define PCI_CB_MEMORY_LIMIT_1  0x28
+#define PCI_CB_IO_BASE_0       0x2c
+#define PCI_CB_IO_BASE_0_HI    0x2e
+#define PCI_CB_IO_LIMIT_0      0x30
+#define PCI_CB_IO_LIMIT_0_HI   0x32
+#define PCI_CB_IO_BASE_1       0x34
+#define PCI_CB_IO_BASE_1_HI    0x36
+#define PCI_CB_IO_LIMIT_1      0x38
+#define PCI_CB_IO_LIMIT_1_HI   0x3a
+#define  PCI_CB_IO_RANGE_MASK  (~0x03UL)
+/* 0x3c-0x3d are same as for htype 0 */
+#define PCI_CB_BRIDGE_CONTROL  0x3e
+#define  PCI_CB_BRIDGE_CTL_PARITY      0x01    /* Similar to standard bridge control register */
+#define  PCI_CB_BRIDGE_CTL_SERR                0x02
+#define  PCI_CB_BRIDGE_CTL_ISA         0x04
+#define  PCI_CB_BRIDGE_CTL_VGA         0x08
+#define  PCI_CB_BRIDGE_CTL_MASTER_ABORT        0x20
+#define  PCI_CB_BRIDGE_CTL_CB_RESET    0x40    /* CardBus reset */
+#define  PCI_CB_BRIDGE_CTL_16BIT_INT   0x80    /* Enable interrupt for 16-bit cards */
+#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100 /* Prefetch enable for both memory regions */
+#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
+#define  PCI_CB_BRIDGE_CTL_POST_WRITES 0x400
+#define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40
+#define PCI_CB_SUBSYSTEM_ID    0x42
+#define PCI_CB_LEGACY_MODE_BASE        0x44    /* 16-bit PC Card legacy mode base address (ExCa) */
+/* 0x48-0x7f reserved */
+
+/* Capability lists */
+
+#define PCI_CAP_LIST_ID                0       /* Capability ID */
+#define  PCI_CAP_ID_PM         0x01    /* Power Management */
+#define  PCI_CAP_ID_AGP                0x02    /* Accelerated Graphics Port */
+#define  PCI_CAP_ID_VPD                0x03    /* Vital Product Data */
+#define  PCI_CAP_ID_SLOTID     0x04    /* Slot Identification */
+#define  PCI_CAP_ID_MSI                0x05    /* Message Signalled Interrupts */
+#define  PCI_CAP_ID_CHSWP      0x06    /* CompactPCI HotSwap */
+#define  PCI_CAP_ID_PCIX       0x07    /* PCI-X */
+#define PCI_CAP_LIST_NEXT      1       /* Next capability in the list */
+#define PCI_CAP_FLAGS          2       /* Capability defined flags (16 bits) */
+#define PCI_CAP_SIZEOF         4
+
+/* Power Management Registers */
+
+#define PCI_PM_PMC              2       /* PM Capabilities Register */
+#define  PCI_PM_CAP_VER_MASK   0x0007  /* Version */
+#define  PCI_PM_CAP_PME_CLOCK  0x0008  /* PME clock required */
+#define  PCI_PM_CAP_RESERVED    0x0010  /* Reserved field */
+#define  PCI_PM_CAP_DSI                0x0020  /* Device specific initialization */
+#define  PCI_PM_CAP_AUX_POWER  0x01C0  /* Auxilliary power support mask */
+#define  PCI_PM_CAP_D1         0x0200  /* D1 power state support */
+#define  PCI_PM_CAP_D2         0x0400  /* D2 power state support */
+#define  PCI_PM_CAP_PME                0x0800  /* PME pin supported */
+#define  PCI_PM_CAP_PME_MASK    0xF800  /* PME Mask of all supported states */
+#define  PCI_PM_CAP_PME_D0      0x0800  /* PME# from D0 */
+#define  PCI_PM_CAP_PME_D1      0x1000  /* PME# from D1 */
+#define  PCI_PM_CAP_PME_D2      0x2000  /* PME# from D2 */
+#define  PCI_PM_CAP_PME_D3      0x4000  /* PME# from D3 (hot) */
+#define  PCI_PM_CAP_PME_D3cold  0x8000  /* PME# from D3 (cold) */
+#define PCI_PM_CTRL            4       /* PM control and status register */
+#define  PCI_PM_CTRL_STATE_MASK        0x0003  /* Current power state (D0 to D3) */
+#define  PCI_PM_CTRL_PME_ENABLE        0x0100  /* PME pin enable */
+#define  PCI_PM_CTRL_DATA_SEL_MASK     0x1e00  /* Data select (??) */
+#define  PCI_PM_CTRL_DATA_SCALE_MASK   0x6000  /* Data scale (??) */
+#define  PCI_PM_CTRL_PME_STATUS        0x8000  /* PME pin status */
+#define PCI_PM_PPB_EXTENSIONS  6       /* PPB support extensions (??) */
+#define  PCI_PM_PPB_B2_B3      0x40    /* Stop clock when in D3hot (??) */
+#define  PCI_PM_BPCC_ENABLE    0x80    /* Bus power/clock control enable (??) */
+#define PCI_PM_DATA_REGISTER   7       /* (??) */
+#define PCI_PM_SIZEOF          8
+
+/* AGP registers */
+
+#define PCI_AGP_VERSION                2       /* BCD version number */
+#define PCI_AGP_RFU            3       /* Rest of capability flags */
+#define PCI_AGP_STATUS         4       /* Status register */
+#define  PCI_AGP_STATUS_RQ_MASK        0xff000000      /* Maximum number of requests - 1 */
+#define  PCI_AGP_STATUS_SBA    0x0200  /* Sideband addressing supported */
+#define  PCI_AGP_STATUS_64BIT  0x0020  /* 64-bit addressing supported */
+#define  PCI_AGP_STATUS_FW     0x0010  /* FW transfers supported */
+#define  PCI_AGP_STATUS_RATE4  0x0004  /* 4x transfer rate supported */
+#define  PCI_AGP_STATUS_RATE2  0x0002  /* 2x transfer rate supported */
+#define  PCI_AGP_STATUS_RATE1  0x0001  /* 1x transfer rate supported */
+#define PCI_AGP_COMMAND                8       /* Control register */
+#define  PCI_AGP_COMMAND_RQ_MASK 0xff000000  /* Master: Maximum number of requests */
+#define  PCI_AGP_COMMAND_SBA   0x0200  /* Sideband addressing enabled */
+#define  PCI_AGP_COMMAND_AGP   0x0100  /* Allow processing of AGP transactions */
+#define  PCI_AGP_COMMAND_64BIT 0x0020  /* Allow processing of 64-bit addresses */
+#define  PCI_AGP_COMMAND_FW    0x0010  /* Force FW transfers */
+#define  PCI_AGP_COMMAND_RATE4 0x0004  /* Use 4x rate */
+#define  PCI_AGP_COMMAND_RATE2 0x0002  /* Use 2x rate */
+#define  PCI_AGP_COMMAND_RATE1 0x0001  /* Use 1x rate */
+#define PCI_AGP_SIZEOF         12
+
+/* Slot Identification */
+
+#define PCI_SID_ESR            2       /* Expansion Slot Register */
+#define  PCI_SID_ESR_NSLOTS    0x1f    /* Number of expansion slots available */
+#define  PCI_SID_ESR_FIC       0x20    /* First In Chassis Flag */
+#define PCI_SID_CHASSIS_NR     3       /* Chassis Number */
+
+/* Message Signalled Interrupts registers */
+
+#define PCI_MSI_FLAGS          2       /* Various flags */
+#define  PCI_MSI_FLAGS_64BIT   0x80    /* 64-bit addresses allowed */
+#define  PCI_MSI_FLAGS_QSIZE   0x70    /* Message queue size configured */
+#define  PCI_MSI_FLAGS_QMASK   0x0e    /* Maximum queue size available */
+#define  PCI_MSI_FLAGS_ENABLE  0x01    /* MSI feature enabled */
+#define PCI_MSI_RFU            3       /* Rest of capability flags */
+#define PCI_MSI_ADDRESS_LO     4       /* Lower 32 bits */
+#define PCI_MSI_ADDRESS_HI     8       /* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */
+#define PCI_MSI_DATA_32                8       /* 16 bits of data for 32-bit devices */
+#define PCI_MSI_DATA_64                12      /* 16 bits of data for 64-bit devices */
+
+/* CompactPCI Hotswap Register */
+
+#define PCI_CHSWP_CSR          2       /* Control and Status Register */
+#define  PCI_CHSWP_DHA         0x01    /* Device Hiding Arm */
+#define  PCI_CHSWP_EIM         0x02    /* ENUM# Signal Mask */
+#define  PCI_CHSWP_PIE         0x04    /* Pending Insert or Extract */
+#define  PCI_CHSWP_LOO         0x08    /* LED On / Off */
+#define  PCI_CHSWP_PI          0x30    /* Programming Interface */
+#define  PCI_CHSWP_EXT         0x40    /* ENUM# status - extraction */
+#define  PCI_CHSWP_INS         0x80    /* ENUM# status - insertion */
+
+/* PCI-X registers */
+
+#define PCI_X_CMD              2       /* Modes & Features */
+#define  PCI_X_CMD_DPERR_E     0x0001  /* Data Parity Error Recovery Enable */
+#define  PCI_X_CMD_ERO         0x0002  /* Enable Relaxed Ordering */
+#define  PCI_X_CMD_MAX_READ    0x000c  /* Max Memory Read Byte Count */
+#define  PCI_X_CMD_MAX_SPLIT   0x0070  /* Max Outstanding Split Transactions */
+#define PCI_X_DEVFN            4       /* A copy of devfn. */
+#define PCI_X_BUSNR            5       /* Bus segment number */
+#define PCI_X_STATUS           6       /* PCI-X capabilities */
+#define  PCI_X_STATUS_64BIT    0x0001  /* 64-bit device */
+#define  PCI_X_STATUS_133MHZ   0x0002  /* 133 MHz capable */
+#define  PCI_X_STATUS_SPL_DISC 0x0004  /* Split Completion Discarded */
+#define  PCI_X_STATUS_UNX_SPL  0x0008  /* Unexpected Split Completion */
+#define  PCI_X_STATUS_COMPLEX  0x0010  /* Device Complexity */
+#define  PCI_X_STATUS_MAX_READ 0x0060  /* Designed Maximum Memory Read Count */
+#define  PCI_X_STATUS_MAX_SPLIT        0x0380  /* Design Max Outstanding Split Trans */
+#define  PCI_X_STATUS_MAX_CUM  0x1c00  /* Designed Max Cumulative Read Size */
+#define  PCI_X_STATUS_SPL_ERR  0x2000  /* Rcvd Split Completion Error Msg */
+
+/* Include the ID list */
+
+#include <xen/pci_ids.h>
+
+/*
+ * The PCI interface treats multi-function devices as independent
+ * devices.  The slot/function address of each device is encoded
+ * in a single byte as follows:
+ *
+ *     7:3 = slot
+ *     2:0 = function
+ */
+#define PCI_DEVFN(slot,func)   ((((slot) & 0x1f) << 3) | ((func) & 0x07))
+#define PCI_SLOT(devfn)                (((devfn) >> 3) & 0x1f)
+#define PCI_FUNC(devfn)                ((devfn) & 0x07)
+
+/* Ioctls for /proc/bus/pci/X/Y nodes. */
+#define PCIIOC_BASE            ('P' << 24 | 'C' << 16 | 'I' << 8)
+#define PCIIOC_CONTROLLER      (PCIIOC_BASE | 0x00)    /* Get controller for PCI device. */
+#define PCIIOC_MMAP_IS_IO      (PCIIOC_BASE | 0x01)    /* Set mmap state to I/O space. */
+#define PCIIOC_MMAP_IS_MEM     (PCIIOC_BASE | 0x02)    /* Set mmap state to MEM space. */
+#define PCIIOC_WRITE_COMBINE   (PCIIOC_BASE | 0x03)    /* Enable/disable write-combining. */
+
+#ifdef __KERNEL__
+
+#include <xen/types.h>
+#include <xen/config.h>
+#include <xen/ioport.h>
+#include <xen/list.h>
+#include <xen/errno.h>
+
+/* File state for mmap()s on /proc/bus/pci/X/Y */
+enum pci_mmap_state {
+       pci_mmap_io,
+       pci_mmap_mem
+};
+
+/* This defines the direction arg to the DMA mapping routines. */
+#define PCI_DMA_BIDIRECTIONAL  0
+#define PCI_DMA_TODEVICE       1
+#define PCI_DMA_FROMDEVICE     2
+#define PCI_DMA_NONE           3
+
+#define DEVICE_COUNT_COMPATIBLE        4
+#define DEVICE_COUNT_IRQ       2
+#define DEVICE_COUNT_DMA       2
+#define DEVICE_COUNT_RESOURCE  12
+
+#define PCI_ANY_ID (~0)
+
+#define pci_present pcibios_present
+
+
+#define pci_for_each_dev_reverse(dev) \
+       for(dev = pci_dev_g(pci_devices.prev); dev != pci_dev_g(&pci_devices); dev = pci_dev_g(dev->global_list.prev))
+
+#define pci_for_each_bus(bus) \
+for(bus = pci_bus_b(pci_root_buses.next); bus != pci_bus_b(&pci_root_buses); bus = pci_bus_b(bus->node.next))
+
+/*
+ * The pci_dev structure is used to describe both PCI and ISAPnP devices.
+ */
+struct pci_dev {
+       struct list_head global_list;   /* node in list of all PCI devices */
+       struct list_head bus_list;      /* node in per-bus list */
+       struct pci_bus  *bus;           /* bus this device is on */
+       struct pci_bus  *subordinate;   /* bus this device bridges to */
+
+       void            *sysdata;       /* hook for sys-specific extension */
+       struct proc_dir_entry *procent; /* device entry in /proc/bus/pci */
+
+       unsigned int    devfn;          /* encoded device & function index */
+       unsigned short  vendor;
+       unsigned short  device;
+       unsigned short  subsystem_vendor;
+       unsigned short  subsystem_device;
+       unsigned int    class;          /* 3 bytes: (base,sub,prog-if) */
+       u8              hdr_type;       /* PCI header type (`multi' flag masked out) */
+       u8              rom_base_reg;   /* which config register controls the ROM */
+
+       struct pci_driver *driver;      /* which driver has allocated this device */
+       void            *driver_data;   /* data private to the driver */
+       u64             dma_mask;       /* Mask of the bits of bus address this
+                                          device implements.  Normally this is
+                                          0xffffffff.  You only need to change
+                                          this if your device has broken DMA
+                                          or supports 64-bit transfers.  */
+
+       u32             current_state;  /* Current operating state. In ACPI-speak,
+                                          this is D0-D3, D0 being fully functional,
+                                          and D3 being off. */
+
+       /* device is compatible with these IDs */
+       unsigned short vendor_compatible[DEVICE_COUNT_COMPATIBLE];
+       unsigned short device_compatible[DEVICE_COUNT_COMPATIBLE];
+
+       /*
+        * Instead of touching interrupt line and base address registers
+        * directly, use the values stored here. They might be different!
+        */
+       unsigned int    irq;
+       struct resource resource[DEVICE_COUNT_RESOURCE]; /* I/O and memory regions + expansion ROMs */
+       struct resource dma_resource[DEVICE_COUNT_DMA];
+       struct resource irq_resource[DEVICE_COUNT_IRQ];
+
+       char            name[90];       /* device name */
+       char            slot_name[8];   /* slot name */
+       int             active;         /* ISAPnP: device is active */
+       int             ro;             /* ISAPnP: read only */
+       unsigned short  regs;           /* ISAPnP: supported registers */
+
+       /* These fields are used by common fixups */
+       unsigned short  transparent:1;  /* Transparent PCI bridge */
+
+       int (*prepare)(struct pci_dev *dev);    /* ISAPnP hooks */
+       int (*activate)(struct pci_dev *dev);
+       int (*deactivate)(struct pci_dev *dev);
+};
+
+#define pci_dev_g(n) list_entry(n, struct pci_dev, global_list)
+#define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list)
+
+/*
+ *  For PCI devices, the region numbers are assigned this way:
+ *
+ *     0-5     standard PCI regions
+ *     6       expansion ROM
+ *     7-10    bridges: address space assigned to buses behind the bridge
+ */
+
+#define PCI_ROM_RESOURCE 6
+#define PCI_BRIDGE_RESOURCES 7
+#define PCI_NUM_RESOURCES 11
+  
+#define PCI_REGION_FLAG_MASK 0x0fU     /* These bits of resource flags tell us the PCI region flags */
+
+struct pci_bus {
+       struct list_head node;          /* node in list of buses */
+       struct pci_bus  *parent;        /* parent bus this bridge is on */
+       struct list_head children;      /* list of child buses */
+       struct list_head devices;       /* list of devices on this bus */
+       struct pci_dev  *self;          /* bridge device as seen by parent */
+       struct resource *resource[4];   /* address space routed to this bus */
+
+       struct pci_ops  *ops;           /* configuration access functions */
+       void            *sysdata;       /* hook for sys-specific extension */
+       struct proc_dir_entry *procdir; /* directory entry in /proc/bus/pci */
+
+       unsigned char   number;         /* bus number */
+       unsigned char   primary;        /* number of primary bridge */
+       unsigned char   secondary;      /* number of secondary bridge */
+       unsigned char   subordinate;    /* max number of subordinate buses */
+
+       char            name[48];
+       unsigned short  vendor;
+       unsigned short  device;
+       unsigned int    serial;         /* serial number */
+       unsigned char   pnpver;         /* Plug & Play version */
+       unsigned char   productver;     /* product version */
+       unsigned char   checksum;       /* if zero - checksum passed */
+       unsigned char   pad1;
+};
+
+#define pci_bus_b(n) list_entry(n, struct pci_bus, node)
+
+extern struct list_head pci_root_buses;        /* list of all known PCI buses */
+extern struct list_head pci_devices;   /* list of all devices */
+
+extern struct proc_dir_entry *proc_bus_pci_dir;
+/*
+ * Error values that may be returned by PCI functions.
+ */
+#define PCIBIOS_SUCCESSFUL             0x00
+#define PCIBIOS_FUNC_NOT_SUPPORTED     0x81
+#define PCIBIOS_BAD_VENDOR_ID          0x83
+#define PCIBIOS_DEVICE_NOT_FOUND       0x86
+#define PCIBIOS_BAD_REGISTER_NUMBER    0x87
+#define PCIBIOS_SET_FAILED             0x88
+#define PCIBIOS_BUFFER_TOO_SMALL       0x89
+
+/* Low-level architecture-dependent routines */
+
+struct pci_ops {
+       int (*read_byte)(struct pci_dev *, int where, u8 *val);
+       int (*read_word)(struct pci_dev *, int where, u16 *val);
+       int (*read_dword)(struct pci_dev *, int where, u32 *val);
+       int (*write_byte)(struct pci_dev *, int where, u8 val);
+       int (*write_word)(struct pci_dev *, int where, u16 val);
+       int (*write_dword)(struct pci_dev *, int where, u32 val);
+};
+
+struct pbus_set_ranges_data
+{
+       unsigned long io_start, io_end;
+       unsigned long mem_start, mem_end;
+       unsigned long prefetch_start, prefetch_end;
+};
+
+struct pci_device_id {
+       unsigned int vendor, device;            /* Vendor and device ID or PCI_ANY_ID */
+       unsigned int subvendor, subdevice;      /* Subsystem ID's or PCI_ANY_ID */
+       unsigned int class, class_mask;         /* (class,subclass,prog-if) triplet */
+       unsigned long driver_data;              /* Data private to the driver */
+};
+
+struct pci_driver {
+       struct list_head node;
+       char *name;
+       const struct pci_device_id *id_table;   /* NULL if wants all devices */
+       int  (*probe)  (struct pci_dev *dev, const struct pci_device_id *id);   /* New device inserted */
+       void (*remove) (struct pci_dev *dev);   /* Device removed (NULL if not a hot-plug capable driver) */
+       int  (*save_state) (struct pci_dev *dev, u32 state);    /* Save Device Context */
+       int  (*suspend) (struct pci_dev *dev, u32 state);       /* Device suspended */
+       int  (*resume) (struct pci_dev *dev);                   /* Device woken up */
+       int  (*enable_wake) (struct pci_dev *dev, u32 state, int enable);   /* Enable wake event */
+};
+
+
+/* these external functions are only available when PCI support is enabled */
+#ifdef CONFIG_PCI
+
+#define pci_for_each_dev(dev) \
+       for(dev = pci_dev_g(pci_devices.next); dev != pci_dev_g(&pci_devices); dev = pci_dev_g(dev->global_list.next))
+
+void pcibios_init(void);
+void pcibios_fixup_bus(struct pci_bus *);
+int pcibios_enable_device(struct pci_dev *, int mask);
+char *pcibios_setup (char *str);
+
+/* Used only when drivers/pci/setup.c is used */
+void pcibios_align_resource(void *, struct resource *,
+                           unsigned long, unsigned long);
+void pcibios_update_resource(struct pci_dev *, struct resource *,
+                            struct resource *, int);
+void pcibios_update_irq(struct pci_dev *, int irq);
+void pcibios_fixup_pbus_ranges(struct pci_bus *, struct pbus_set_ranges_data *);
+
+/* Backward compatibility, don't use in new code! */
+
+int pcibios_present(void);
+int pcibios_read_config_byte (unsigned char bus, unsigned char dev_fn,
+                             unsigned char where, unsigned char *val);
+int pcibios_read_config_word (unsigned char bus, unsigned char dev_fn,
+                             unsigned char where, unsigned short *val);
+int pcibios_read_config_dword (unsigned char bus, unsigned char dev_fn,
+                              unsigned char where, unsigned int *val);
+int pcibios_write_config_byte (unsigned char bus, unsigned char dev_fn,
+                              unsigned char where, unsigned char val);
+int pcibios_write_config_word (unsigned char bus, unsigned char dev_fn,
+                              unsigned char where, unsigned short val);
+int pcibios_write_config_dword (unsigned char bus, unsigned char dev_fn,
+                               unsigned char where, unsigned int val);
+int pcibios_find_class (unsigned int class_code, unsigned short index, unsigned char *bus, unsigned char *dev_fn);
+int pcibios_find_device (unsigned short vendor, unsigned short dev_id,
+                        unsigned short index, unsigned char *bus,
+                        unsigned char *dev_fn);
+
+/* Generic PCI functions used internally */
+
+void pci_init(void);
+int pci_bus_exists(const struct list_head *list, int nr);
+struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
+struct pci_bus *pci_alloc_primary_bus(int bus);
+struct pci_dev *pci_scan_slot(struct pci_dev *temp);
+int pci_proc_attach_device(struct pci_dev *dev);
+int pci_proc_detach_device(struct pci_dev *dev);
+int pci_proc_attach_bus(struct pci_bus *bus);
+int pci_proc_detach_bus(struct pci_bus *bus);
+void pci_name_device(struct pci_dev *dev);
+char *pci_class_name(u32 class);
+void pci_read_bridge_bases(struct pci_bus *child);
+struct resource *pci_find_parent_resource(const struct pci_dev *dev, struct resource *res);
+int pci_setup_device(struct pci_dev *dev);
+int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);
+
+/* Generic PCI functions exported to card drivers */
+
+struct pci_dev *pci_find_device (unsigned int vendor, unsigned int device, const struct pci_dev *from);
+struct pci_dev *pci_find_subsys (unsigned int vendor, unsigned int device,
+                                unsigned int ss_vendor, unsigned int ss_device,
+                                const struct pci_dev *from);
+struct pci_dev *pci_find_class (unsigned int class, const struct pci_dev *from);
+struct pci_dev *pci_find_slot (unsigned int bus, unsigned int devfn);
+int pci_find_capability (struct pci_dev *dev, int cap);
+
+int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val);
+int pci_read_config_word(struct pci_dev *dev, int where, u16 *val);
+int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val);
+int pci_write_config_byte(struct pci_dev *dev, int where, u8 val);
+int pci_write_config_word(struct pci_dev *dev, int where, u16 val);
+int pci_write_config_dword(struct pci_dev *dev, int where, u32 val);
+
+int pci_enable_device(struct pci_dev *dev);
+int pci_enable_device_bars(struct pci_dev *dev, int mask);
+void pci_disable_device(struct pci_dev *dev);
+void pci_set_master(struct pci_dev *dev);
+#define HAVE_PCI_SET_MWI
+int pci_set_mwi(struct pci_dev *dev);
+void pci_clear_mwi(struct pci_dev *dev);
+int pdev_set_mwi(struct pci_dev *dev);
+int pci_set_dma_mask(struct pci_dev *dev, u64 mask);
+int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask);
+int pci_assign_resource(struct pci_dev *dev, int i);
+
+/* Power management related routines */
+int pci_save_state(struct pci_dev *dev, u32 *buffer);
+int pci_restore_state(struct pci_dev *dev, u32 *buffer);
+int pci_set_power_state(struct pci_dev *dev, int state);
+int pci_enable_wake(struct pci_dev *dev, u32 state, int enable);
+
+/* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */
+
+int pci_claim_resource(struct pci_dev *, int);
+void pci_assign_unassigned_resources(void);
+void pdev_enable_device(struct pci_dev *);
+void pdev_sort_resources(struct pci_dev *, struct resource_list *);
+unsigned long pci_bridge_check_io(struct pci_dev *);
+void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
+                   int (*)(struct pci_dev *, u8, u8));
+#define HAVE_PCI_REQ_REGIONS   2
+int pci_request_regions(struct pci_dev *, char *);
+void pci_release_regions(struct pci_dev *);
+int pci_request_region(struct pci_dev *, int, char *);
+void pci_release_region(struct pci_dev *, int);
+
+/* New-style probing supporting hot-pluggable devices */
+int pci_register_driver(struct pci_driver *);
+void pci_unregister_driver(struct pci_driver *);
+void pci_insert_device(struct pci_dev *, struct pci_bus *);
+void pci_remove_device(struct pci_dev *);
+struct pci_driver *pci_dev_driver(const struct pci_dev *);
+const struct pci_device_id *pci_match_device(const struct pci_device_id *ids, const struct pci_dev *dev);
+void pci_announce_device_to_drivers(struct pci_dev *);
+unsigned int pci_do_scan_bus(struct pci_bus *bus);
+struct pci_bus * pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr);
+
+#if 0
+/* kmem_cache style wrapper around pci_alloc_consistent() */
+struct pci_pool *pci_pool_create (const char *name, struct pci_dev *dev,
+               size_t size, size_t align, size_t allocation, int flags);
+void pci_pool_destroy (struct pci_pool *pool);
+
+void *pci_pool_alloc (struct pci_pool *pool, int flags, dma_addr_t *handle);
+void pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t addr);
+#endif
+
+#endif /* CONFIG_PCI */
+
+/* Include architecture-dependent settings and functions */
+
+#include <asm/pci.h>
+
+/*
+ *  If the system does not have PCI, clearly these return errors.  Define
+ *  these as simple inline functions to avoid hair in drivers.
+ */
+
+#ifndef CONFIG_PCI
+static inline int pcibios_present(void) { return 0; }
+static inline int pcibios_find_class (unsigned int class_code, unsigned short index, unsigned char *bus, unsigned char *dev_fn) 
+{      return PCIBIOS_DEVICE_NOT_FOUND; }
+
+#define _PCI_NOP(o,s,t) \
+       static inline int pcibios_##o##_config_##s (u8 bus, u8 dfn, u8 where, t val) \
+               { return PCIBIOS_FUNC_NOT_SUPPORTED; } \
+       static inline int pci_##o##_config_##s (struct pci_dev *dev, int where, t val) \
+               { return PCIBIOS_FUNC_NOT_SUPPORTED; }
+#define _PCI_NOP_ALL(o,x)      _PCI_NOP(o,byte,u8 x) \
+                               _PCI_NOP(o,word,u16 x) \
+                               _PCI_NOP(o,dword,u32 x)
+_PCI_NOP_ALL(read, *)
+_PCI_NOP_ALL(write,)
+
+static inline struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device, const struct pci_dev *from)
+{ return NULL; }
+
+static inline struct pci_dev *pci_find_class(unsigned int class, const struct pci_dev *from)
+{ return NULL; }
+
+static inline struct pci_dev *pci_find_slot(unsigned int bus, unsigned int devfn)
+{ return NULL; }
+
+static inline struct pci_dev *pci_find_subsys(unsigned int vendor, unsigned int device,
+unsigned int ss_vendor, unsigned int ss_device, const struct pci_dev *from)
+{ return NULL; }
+
+static inline void pci_set_master(struct pci_dev *dev) { }
+static inline int pci_enable_device_bars(struct pci_dev *dev, int mask) { return -EBUSY; }
+static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
+static inline void pci_disable_device(struct pci_dev *dev) { }
+static inline int pci_module_init(struct pci_driver *drv) { return -ENODEV; }
+static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; }
+static inline int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; }
+static inline int pci_assign_resource(struct pci_dev *dev, int i) { return -EBUSY;}
+static inline int pci_register_driver(struct pci_driver *drv) { return 0;}
+static inline void pci_unregister_driver(struct pci_driver *drv) { }
+static inline int scsi_to_pci_dma_dir(unsigned char scsi_dir) { return scsi_dir; }
+static inline int pci_find_capability (struct pci_dev *dev, int cap) {return 0; }
+static inline const struct pci_device_id *pci_match_device(const struct pci_device_id *ids, const struct pci_dev *dev) { return NULL; }
+
+/* Power management related routines */
+static inline int pci_save_state(struct pci_dev *dev, u32 *buffer) { return 0; }
+static inline int pci_restore_state(struct pci_dev *dev, u32 *buffer) { return 0; }
+static inline int pci_set_power_state(struct pci_dev *dev, int state) { return 0; }
+static inline int pci_enable_wake(struct pci_dev *dev, u32 state, int enable) { return 0; }
+
+#define pci_for_each_dev(dev) \
+       for(dev = NULL; 0; )
+
+#else
+
+/*
+ * a helper function which helps ensure correct pci_driver
+ * setup and cleanup for commonly-encountered hotplug/modular cases
+ *
+ * This MUST stay in a header, as it checks for -DMODULE
+ */
+static inline int pci_module_init(struct pci_driver *drv)
+{
+       int rc = pci_register_driver (drv);
+
+       if (rc > 0)
+               return 0;
+
+       /* iff CONFIG_HOTPLUG and built into kernel, we should
+        * leave the driver around for future hotplug events.
+        * For the module case, a hotplug daemon of some sort
+        * should load a module in response to an insert event. */
+#if defined(CONFIG_HOTPLUG) && !defined(MODULE)
+       if (rc == 0)
+               return 0;
+#else
+       if (rc == 0)
+               rc = -ENODEV;           
+#endif
+
+       /* if we get here, we need to clean up pci driver instance
+        * and return some sort of error */
+       pci_unregister_driver (drv);
+       
+       return rc;
+}
+
+#endif /* !CONFIG_PCI */
+
+/* these helpers provide future and backwards compatibility
+ * for accessing popular PCI BAR info */
+#define pci_resource_start(dev,bar)   ((dev)->resource[(bar)].start)
+#define pci_resource_end(dev,bar)     ((dev)->resource[(bar)].end)
+#define pci_resource_flags(dev,bar)   ((dev)->resource[(bar)].flags)
+#define pci_resource_len(dev,bar) \
+       ((pci_resource_start((dev),(bar)) == 0 &&       \
+         pci_resource_end((dev),(bar)) ==              \
+         pci_resource_start((dev),(bar))) ? 0 :        \
+                                                       \
+        (pci_resource_end((dev),(bar)) -               \
+         pci_resource_start((dev),(bar)) + 1))
+
+/* Similar to the helpers above, these manipulate per-pci_dev
+ * driver-specific data.  Currently stored as pci_dev::driver_data,
+ * a void pointer, but it is not present on older kernels.
+ */
+static inline void *pci_get_drvdata (struct pci_dev *pdev)
+{
+       return pdev->driver_data;
+}
+
+static inline void pci_set_drvdata (struct pci_dev *pdev, void *data)
+{
+       pdev->driver_data = data;
+}
+
+static inline char *pci_name(struct pci_dev *pdev)
+{
+        return pdev->slot_name;
+}
+
+/*
+ *  The world is not perfect and supplies us with broken PCI devices.
+ *  For at least a part of these bugs we need a work-around, so both
+ *  generic (drivers/pci/quirks.c) and per-architecture code can define
+ *  fixup hooks to be called for particular buggy devices.
+ */
+
+struct pci_fixup {
+       int pass;
+       u16 vendor, device;                     /* You can use PCI_ANY_ID here of course */
+       void (*hook)(struct pci_dev *dev);
+};
+
+extern struct pci_fixup pcibios_fixups[];
+
+#define PCI_FIXUP_HEADER       1               /* Called immediately after reading configuration header */
+#define PCI_FIXUP_FINAL                2               /* Final phase of device fixups */
+
+void pci_fixup_device(int pass, struct pci_dev *dev);
+
+extern int pci_pci_problems;
+#define PCIPCI_FAIL            1
+#define PCIPCI_TRITON          2
+#define PCIPCI_NATOMA          4
+#define PCIPCI_VIAETBF         8
+#define PCIPCI_VSFX            16
+#define PCIPCI_ALIMAGIK                32
+
+#endif /* __KERNEL__ */
+#endif /* LINUX_PCI_H */
diff --git a/xen/include/xen/pci_ids.h b/xen/include/xen/pci_ids.h
new file mode 100644 (file)
index 0000000..d29b709
--- /dev/null
@@ -0,0 +1,1987 @@
+/*
+ *     PCI Class, Vendor and Device IDs
+ *
+ *     Please keep sorted.
+ */
+
+/* Device classes and subclasses */
+
+#define PCI_CLASS_NOT_DEFINED          0x0000
+#define PCI_CLASS_NOT_DEFINED_VGA      0x0001
+
+#define PCI_BASE_CLASS_STORAGE         0x01
+#define PCI_CLASS_STORAGE_SCSI         0x0100
+#define PCI_CLASS_STORAGE_IDE          0x0101
+#define PCI_CLASS_STORAGE_FLOPPY       0x0102
+#define PCI_CLASS_STORAGE_IPI          0x0103
+#define PCI_CLASS_STORAGE_RAID         0x0104
+#define PCI_CLASS_STORAGE_OTHER                0x0180
+
+#define PCI_BASE_CLASS_NETWORK         0x02
+#define PCI_CLASS_NETWORK_ETHERNET     0x0200
+#define PCI_CLASS_NETWORK_TOKEN_RING   0x0201
+#define PCI_CLASS_NETWORK_FDDI         0x0202
+#define PCI_CLASS_NETWORK_ATM          0x0203
+#define PCI_CLASS_NETWORK_OTHER                0x0280
+
+#define PCI_BASE_CLASS_DISPLAY         0x03
+#define PCI_CLASS_DISPLAY_VGA          0x0300
+#define PCI_CLASS_DISPLAY_XGA          0x0301
+#define PCI_CLASS_DISPLAY_3D           0x0302
+#define PCI_CLASS_DISPLAY_OTHER                0x0380
+
+#define PCI_BASE_CLASS_MULTIMEDIA      0x04
+#define PCI_CLASS_MULTIMEDIA_VIDEO     0x0400
+#define PCI_CLASS_MULTIMEDIA_AUDIO     0x0401
+#define PCI_CLASS_MULTIMEDIA_PHONE     0x0402
+#define PCI_CLASS_MULTIMEDIA_OTHER     0x0480
+
+#define PCI_BASE_CLASS_MEMORY          0x05
+#define PCI_CLASS_MEMORY_RAM           0x0500
+#define PCI_CLASS_MEMORY_FLASH         0x0501
+#define PCI_CLASS_MEMORY_OTHER         0x0580
+
+#define PCI_BASE_CLASS_BRIDGE          0x06
+#define PCI_CLASS_BRIDGE_HOST          0x0600
+#define PCI_CLASS_BRIDGE_ISA           0x0601
+#define PCI_CLASS_BRIDGE_EISA          0x0602
+#define PCI_CLASS_BRIDGE_MC            0x0603
+#define PCI_CLASS_BRIDGE_PCI           0x0604
+#define PCI_CLASS_BRIDGE_PCMCIA                0x0605
+#define PCI_CLASS_BRIDGE_NUBUS         0x0606
+#define PCI_CLASS_BRIDGE_CARDBUS       0x0607
+#define PCI_CLASS_BRIDGE_RACEWAY       0x0608
+#define PCI_CLASS_BRIDGE_OTHER         0x0680
+
+#define PCI_BASE_CLASS_COMMUNICATION   0x07
+#define PCI_CLASS_COMMUNICATION_SERIAL 0x0700
+#define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701
+#define PCI_CLASS_COMMUNICATION_MULTISERIAL 0x0702
+#define PCI_CLASS_COMMUNICATION_MODEM  0x0703
+#define PCI_CLASS_COMMUNICATION_OTHER  0x0780
+
+#define PCI_BASE_CLASS_SYSTEM          0x08
+#define PCI_CLASS_SYSTEM_PIC           0x0800
+#define PCI_CLASS_SYSTEM_DMA           0x0801
+#define PCI_CLASS_SYSTEM_TIMER         0x0802
+#define PCI_CLASS_SYSTEM_RTC           0x0803
+#define PCI_CLASS_SYSTEM_PCI_HOTPLUG   0x0804
+#define PCI_CLASS_SYSTEM_OTHER         0x0880
+
+#define PCI_BASE_CLASS_INPUT           0x09
+#define PCI_CLASS_INPUT_KEYBOARD       0x0900
+#define PCI_CLASS_INPUT_PEN            0x0901
+#define PCI_CLASS_INPUT_MOUSE          0x0902
+#define PCI_CLASS_INPUT_SCANNER                0x0903
+#define PCI_CLASS_INPUT_GAMEPORT       0x0904
+#define PCI_CLASS_INPUT_OTHER          0x0980
+
+#define PCI_BASE_CLASS_DOCKING         0x0a
+#define PCI_CLASS_DOCKING_GENERIC      0x0a00
+#define PCI_CLASS_DOCKING_OTHER                0x0a80
+
+#define PCI_BASE_CLASS_PROCESSOR       0x0b
+#define PCI_CLASS_PROCESSOR_386                0x0b00
+#define PCI_CLASS_PROCESSOR_486                0x0b01
+#define PCI_CLASS_PROCESSOR_PENTIUM    0x0b02
+#define PCI_CLASS_PROCESSOR_ALPHA      0x0b10
+#define PCI_CLASS_PROCESSOR_POWERPC    0x0b20
+#define PCI_CLASS_PROCESSOR_MIPS       0x0b30
+#define PCI_CLASS_PROCESSOR_CO         0x0b40
+
+#define PCI_BASE_CLASS_SERIAL          0x0c
+#define PCI_CLASS_SERIAL_FIREWIRE      0x0c00
+#define PCI_CLASS_SERIAL_ACCESS                0x0c01
+#define PCI_CLASS_SERIAL_SSA           0x0c02
+#define PCI_CLASS_SERIAL_USB           0x0c03
+#define PCI_CLASS_SERIAL_FIBER         0x0c04
+#define PCI_CLASS_SERIAL_SMBUS         0x0c05
+
+#define PCI_BASE_CLASS_INTELLIGENT     0x0e
+#define PCI_CLASS_INTELLIGENT_I2O      0x0e00
+
+#define PCI_BASE_CLASS_SATELLITE       0x0f
+#define PCI_CLASS_SATELLITE_TV         0x0f00
+#define PCI_CLASS_SATELLITE_AUDIO      0x0f01
+#define PCI_CLASS_SATELLITE_VOICE      0x0f03
+#define PCI_CLASS_SATELLITE_DATA       0x0f04
+
+#define PCI_BASE_CLASS_CRYPT           0x10
+#define PCI_CLASS_CRYPT_NETWORK                0x1000
+#define PCI_CLASS_CRYPT_ENTERTAINMENT  0x1001
+#define PCI_CLASS_CRYPT_OTHER          0x1080
+
+#define PCI_BASE_CLASS_SIGNAL_PROCESSING 0x11
+#define PCI_CLASS_SP_DPIO              0x1100
+#define PCI_CLASS_SP_OTHER             0x1180
+
+#define PCI_CLASS_OTHERS               0xff
+
+/* Vendors and devices.  Sort key: vendor first, device next. */
+
+#define PCI_VENDOR_ID_DYNALINK         0x0675
+#define PCI_DEVICE_ID_DYNALINK_IS64PH  0x1702
+
+#define PCI_VENDOR_ID_BERKOM                   0x0871
+#define PCI_DEVICE_ID_BERKOM_A1T               0xffa1
+#define PCI_DEVICE_ID_BERKOM_T_CONCEPT         0xffa2
+#define PCI_DEVICE_ID_BERKOM_A4T               0xffa4
+#define PCI_DEVICE_ID_BERKOM_SCITEL_QUADRO     0xffa8
+
+#define PCI_VENDOR_ID_COMPAQ           0x0e11
+#define PCI_DEVICE_ID_COMPAQ_TOKENRING 0x0508
+#define PCI_DEVICE_ID_COMPAQ_1280      0x3033
+#define PCI_DEVICE_ID_COMPAQ_TRIFLEX   0x4000
+#define PCI_DEVICE_ID_COMPAQ_6010      0x6010
+#define PCI_DEVICE_ID_COMPAQ_TACHYON   0xa0fc
+#define PCI_DEVICE_ID_COMPAQ_SMART2P   0xae10
+#define PCI_DEVICE_ID_COMPAQ_NETEL100  0xae32
+#define PCI_DEVICE_ID_COMPAQ_TRIFLEX_IDE 0xae33
+#define PCI_DEVICE_ID_COMPAQ_NETEL10   0xae34
+#define PCI_DEVICE_ID_COMPAQ_NETFLEX3I 0xae35
+#define PCI_DEVICE_ID_COMPAQ_NETEL100D 0xae40
+#define PCI_DEVICE_ID_COMPAQ_NETEL100PI        0xae43
+#define PCI_DEVICE_ID_COMPAQ_NETEL100I 0xb011
+#define PCI_DEVICE_ID_COMPAQ_CISS      0xb060
+#define PCI_DEVICE_ID_COMPAQ_CISSB     0xb178
+#define PCI_DEVICE_ID_COMPAQ_CISSC     0x0046
+#define PCI_DEVICE_ID_COMPAQ_THUNDER   0xf130
+#define PCI_DEVICE_ID_COMPAQ_NETFLEX3B 0xf150
+
+#define PCI_VENDOR_ID_NCR              0x1000
+#define PCI_VENDOR_ID_LSI_LOGIC                0x1000
+#define PCI_DEVICE_ID_NCR_53C810       0x0001
+#define PCI_DEVICE_ID_NCR_53C820       0x0002
+#define PCI_DEVICE_ID_NCR_53C825       0x0003
+#define PCI_DEVICE_ID_NCR_53C815       0x0004
+#define PCI_DEVICE_ID_LSI_53C810AP     0x0005
+#define PCI_DEVICE_ID_NCR_53C860       0x0006
+#define PCI_DEVICE_ID_LSI_53C1510      0x000a
+#define PCI_DEVICE_ID_NCR_53C896       0x000b
+#define PCI_DEVICE_ID_NCR_53C895       0x000c
+#define PCI_DEVICE_ID_NCR_53C885       0x000d
+#define PCI_DEVICE_ID_NCR_53C875       0x000f
+#define PCI_DEVICE_ID_NCR_53C1510      0x0010
+#define PCI_DEVICE_ID_LSI_53C895A      0x0012
+#define PCI_DEVICE_ID_LSI_53C875A      0x0013
+#define PCI_DEVICE_ID_LSI_53C1010_33   0x0020
+#define PCI_DEVICE_ID_LSI_53C1010_66   0x0021
+#define PCI_DEVICE_ID_LSI_53C1030      0x0030
+#define PCI_DEVICE_ID_LSI_53C1035      0x0040
+#define PCI_DEVICE_ID_NCR_53C875J      0x008f
+#define PCI_DEVICE_ID_LSI_FC909                0x0621
+#define PCI_DEVICE_ID_LSI_FC929                0x0622
+#define PCI_DEVICE_ID_LSI_FC929_LAN    0x0623
+#define PCI_DEVICE_ID_LSI_FC919                0x0624
+#define PCI_DEVICE_ID_LSI_FC919_LAN    0x0625
+#define PCI_DEVICE_ID_LSI_FC929X       0x0626
+#define PCI_DEVICE_ID_LSI_FC919X       0x0628
+#define PCI_DEVICE_ID_NCR_YELLOWFIN    0x0701
+#define PCI_DEVICE_ID_LSI_61C102       0x0901
+#define PCI_DEVICE_ID_LSI_63C815       0x1000
+
+#define PCI_VENDOR_ID_ATI              0x1002
+/* Mach64 */
+#define PCI_DEVICE_ID_ATI_68800                0x4158
+#define PCI_DEVICE_ID_ATI_215CT222     0x4354
+#define PCI_DEVICE_ID_ATI_210888CX     0x4358
+#define PCI_DEVICE_ID_ATI_215ET222     0x4554
+/* Mach64 / Rage */
+#define PCI_DEVICE_ID_ATI_215GB                0x4742
+#define PCI_DEVICE_ID_ATI_215GD                0x4744
+#define PCI_DEVICE_ID_ATI_215GI                0x4749
+#define PCI_DEVICE_ID_ATI_215GP                0x4750
+#define PCI_DEVICE_ID_ATI_215GQ                0x4751
+#define PCI_DEVICE_ID_ATI_215XL                0x4752
+#define PCI_DEVICE_ID_ATI_215GT                0x4754
+#define PCI_DEVICE_ID_ATI_215GTB       0x4755
+#define PCI_DEVICE_ID_ATI_215_IV       0x4756
+#define PCI_DEVICE_ID_ATI_215_IW       0x4757
+#define PCI_DEVICE_ID_ATI_215_IZ       0x475A
+#define PCI_DEVICE_ID_ATI_210888GX     0x4758
+#define PCI_DEVICE_ID_ATI_215_LB       0x4c42
+#define PCI_DEVICE_ID_ATI_215_LD       0x4c44
+#define PCI_DEVICE_ID_ATI_215_LG       0x4c47
+#define PCI_DEVICE_ID_ATI_215_LI       0x4c49
+#define PCI_DEVICE_ID_ATI_215_LM       0x4c4D
+#define PCI_DEVICE_ID_ATI_215_LN       0x4c4E
+#define PCI_DEVICE_ID_ATI_215_LR       0x4c52
+#define PCI_DEVICE_ID_ATI_215_LS       0x4c53
+#define PCI_DEVICE_ID_ATI_264_LT       0x4c54
+/* Mach64 VT */
+#define PCI_DEVICE_ID_ATI_264VT                0x5654
+#define PCI_DEVICE_ID_ATI_264VU                0x5655
+#define PCI_DEVICE_ID_ATI_264VV                0x5656
+/* Rage128 Pro GL */
+#define PCI_DEVICE_ID_ATI_Rage128_PA   0x5041
+#define PCI_DEVICE_ID_ATI_Rage128_PB   0x5042
+#define PCI_DEVICE_ID_ATI_Rage128_PC   0x5043
+#define PCI_DEVICE_ID_ATI_Rage128_PD   0x5044
+#define PCI_DEVICE_ID_ATI_Rage128_PE   0x5045
+#define PCI_DEVICE_ID_ATI_RAGE128_PF   0x5046
+/* Rage128 Pro VR */
+#define PCI_DEVICE_ID_ATI_RAGE128_PG   0x5047
+#define PCI_DEVICE_ID_ATI_RAGE128_PH   0x5048
+#define PCI_DEVICE_ID_ATI_RAGE128_PI   0x5049
+#define PCI_DEVICE_ID_ATI_RAGE128_PJ   0x504A
+#define PCI_DEVICE_ID_ATI_RAGE128_PK   0x504B
+#define PCI_DEVICE_ID_ATI_RAGE128_PL   0x504C
+#define PCI_DEVICE_ID_ATI_RAGE128_PM   0x504D
+#define PCI_DEVICE_ID_ATI_RAGE128_PN   0x504E
+#define PCI_DEVICE_ID_ATI_RAGE128_PO   0x504F
+#define PCI_DEVICE_ID_ATI_RAGE128_PP   0x5050
+#define PCI_DEVICE_ID_ATI_RAGE128_PQ   0x5051
+#define PCI_DEVICE_ID_ATI_RAGE128_PR   0x5052
+#define PCI_DEVICE_ID_ATI_RAGE128_TR   0x5452
+#define PCI_DEVICE_ID_ATI_RAGE128_PS   0x5053
+#define PCI_DEVICE_ID_ATI_RAGE128_PT   0x5054
+#define PCI_DEVICE_ID_ATI_RAGE128_PU   0x5055
+#define PCI_DEVICE_ID_ATI_RAGE128_PV   0x5056
+#define PCI_DEVICE_ID_ATI_RAGE128_PW   0x5057
+#define PCI_DEVICE_ID_ATI_RAGE128_PX   0x5058
+/* Rage128 GL */
+#define PCI_DEVICE_ID_ATI_RAGE128_RE   0x5245
+#define PCI_DEVICE_ID_ATI_RAGE128_RF   0x5246
+#define PCI_DEVICE_ID_ATI_RAGE128_RG   0x534b
+#define PCI_DEVICE_ID_ATI_RAGE128_RH   0x534c
+#define PCI_DEVICE_ID_ATI_RAGE128_RI   0x534d
+/* Rage128 VR */
+#define PCI_DEVICE_ID_ATI_RAGE128_RK   0x524b
+#define PCI_DEVICE_ID_ATI_RAGE128_RL   0x524c
+#define PCI_DEVICE_ID_ATI_RAGE128_RM   0x5345
+#define PCI_DEVICE_ID_ATI_RAGE128_RN   0x5346
+#define PCI_DEVICE_ID_ATI_RAGE128_RO   0x5347
+/* Rage128 M3 */
+#define PCI_DEVICE_ID_ATI_RAGE128_LE   0x4c45
+#define PCI_DEVICE_ID_ATI_RAGE128_LF   0x4c46
+/* Rage128 Pro Ultra */
+#define PCI_DEVICE_ID_ATI_RAGE128_U1   0x5446
+#define PCI_DEVICE_ID_ATI_RAGE128_U2   0x544C
+#define PCI_DEVICE_ID_ATI_RAGE128_U3   0x5452
+/* Rage M4 */
+#define PCI_DEVICE_ID_ATI_RADEON_LE    0x4d45
+#define PCI_DEVICE_ID_ATI_RADEON_LF    0x4d46
+/* Radeon R100 */
+#define PCI_DEVICE_ID_ATI_RADEON_QD    0x5144
+#define PCI_DEVICE_ID_ATI_RADEON_QE    0x5145
+#define PCI_DEVICE_ID_ATI_RADEON_QF    0x5146
+#define PCI_DEVICE_ID_ATI_RADEON_QG    0x5147
+/* Radeon RV100 (VE) */
+#define PCI_DEVICE_ID_ATI_RADEON_QY    0x5159
+#define PCI_DEVICE_ID_ATI_RADEON_QZ    0x515a
+/* Radeon R200 (8500) */
+#define PCI_DEVICE_ID_ATI_RADEON_QL    0x514c
+#define PCI_DEVICE_ID_ATI_RADEON_QN    0x514e
+#define PCI_DEVICE_ID_ATI_RADEON_QO    0x514f
+#define PCI_DEVICE_ID_ATI_RADEON_Ql    0x516c
+#define PCI_DEVICE_ID_ATI_RADEON_BB    0x4242
+/* Radeon R200 (9100) */
+#define PCI_DEVICE_ID_ATI_RADEON_QM    0x514d
+/* Radeon RV200 (7500) */
+#define PCI_DEVICE_ID_ATI_RADEON_QW    0x5157
+#define PCI_DEVICE_ID_ATI_RADEON_QX    0x5158
+/* Radeon RV250 (9000) */
+#define PCI_DEVICE_ID_ATI_RADEON_Id    0x4964
+#define PCI_DEVICE_ID_ATI_RADEON_Ie    0x4965
+#define PCI_DEVICE_ID_ATI_RADEON_If    0x4966
+#define PCI_DEVICE_ID_ATI_RADEON_Ig    0x4967
+/* Radeon RV280 (9200) */
+#define PCI_DEVICE_ID_ATI_RADEON_Y_    0x5960
+/* Radeon R300 (9700) */
+#define PCI_DEVICE_ID_ATI_RADEON_ND    0x4e44
+#define PCI_DEVICE_ID_ATI_RADEON_NE    0x4e45
+#define PCI_DEVICE_ID_ATI_RADEON_NF    0x4e46
+#define PCI_DEVICE_ID_ATI_RADEON_NG    0x4e47
+#define PCI_DEVICE_ID_ATI_RADEON_AE    0x4145
+#define PCI_DEVICE_ID_ATI_RADEON_AF    0x4146
+/* Radeon R300 (9500) */
+#define PCI_DEVICE_ID_ATI_RADEON_AD    0x4144
+/* Radeon R350 (9800) */
+#define PCI_DEVICE_ID_ATI_RADEON_NH    0x4e48
+#define PCI_DEVICE_ID_ATI_RADEON_NI    0x4e49
+/* Radeon RV350 (9600) */
+#define PCI_DEVICE_ID_ATI_RADEON_AP    0x4150
+#define PCI_DEVICE_ID_ATI_RADEON_AR    0x4152
+/* Radeon M6 */
+#define PCI_DEVICE_ID_ATI_RADEON_LY    0x4c59
+#define PCI_DEVICE_ID_ATI_RADEON_LZ    0x4c5a
+/* Radeon M7 */
+#define PCI_DEVICE_ID_ATI_RADEON_LW    0x4c57
+#define PCI_DEVICE_ID_ATI_RADEON_LX    0x4c58
+/* Radeon M9 */
+#define PCI_DEVICE_ID_ATI_RADEON_Ld    0x4c64
+#define PCI_DEVICE_ID_ATI_RADEON_Le    0x4c65
+#define PCI_DEVICE_ID_ATI_RADEON_Lf    0x4c66
+#define PCI_DEVICE_ID_ATI_RADEON_Lg    0x4c67
+/* RadeonIGP */
+#define PCI_DEVICE_ID_ATI_RADEON_IGP   0xCAB0
+
+#define PCI_VENDOR_ID_VLSI             0x1004
+#define PCI_DEVICE_ID_VLSI_82C592      0x0005
+#define PCI_DEVICE_ID_VLSI_82C593      0x0006
+#define PCI_DEVICE_ID_VLSI_82C594      0x0007
+#define PCI_DEVICE_ID_VLSI_82C597      0x0009
+#define PCI_DEVICE_ID_VLSI_82C541      0x000c
+#define PCI_DEVICE_ID_VLSI_82C543      0x000d
+#define PCI_DEVICE_ID_VLSI_82C532      0x0101
+#define PCI_DEVICE_ID_VLSI_82C534      0x0102
+#define PCI_DEVICE_ID_VLSI_82C535      0x0104
+#define PCI_DEVICE_ID_VLSI_82C147      0x0105
+#define PCI_DEVICE_ID_VLSI_VAS96011    0x0702
+
+#define PCI_VENDOR_ID_ADL              0x1005
+#define PCI_DEVICE_ID_ADL_2301         0x2301
+
+#define PCI_VENDOR_ID_NS               0x100b
+#define PCI_DEVICE_ID_NS_87415         0x0002
+#define PCI_DEVICE_ID_NS_87560_LIO     0x000e
+#define PCI_DEVICE_ID_NS_87560_USB     0x0012
+#define PCI_DEVICE_ID_NS_83815         0x0020
+#define PCI_DEVICE_ID_NS_83820         0x0022
+#define PCI_DEVICE_ID_NS_SCx200_BRIDGE 0x0500
+#define PCI_DEVICE_ID_NS_SCx200_SMI    0x0501
+#define PCI_DEVICE_ID_NS_SCx200_IDE    0x0502
+#define PCI_DEVICE_ID_NS_SCx200_AUDIO  0x0503
+#define PCI_DEVICE_ID_NS_SCx200_VIDEO  0x0504
+#define PCI_DEVICE_ID_NS_SCx200_XBUS   0x0505
+#define PCI_DEVICE_ID_NS_87410         0xd001
+
+#define PCI_VENDOR_ID_TSENG            0x100c
+#define PCI_DEVICE_ID_TSENG_W32P_2     0x3202
+#define PCI_DEVICE_ID_TSENG_W32P_b     0x3205
+#define PCI_DEVICE_ID_TSENG_W32P_c     0x3206
+#define PCI_DEVICE_ID_TSENG_W32P_d     0x3207
+#define PCI_DEVICE_ID_TSENG_ET6000     0x3208
+
+#define PCI_VENDOR_ID_WEITEK           0x100e
+#define PCI_DEVICE_ID_WEITEK_P9000     0x9001
+#define PCI_DEVICE_ID_WEITEK_P9100     0x9100
+
+#define PCI_VENDOR_ID_DEC              0x1011
+#define PCI_DEVICE_ID_DEC_BRD          0x0001
+#define PCI_DEVICE_ID_DEC_TULIP                0x0002
+#define PCI_DEVICE_ID_DEC_TGA          0x0004
+#define PCI_DEVICE_ID_DEC_TULIP_FAST   0x0009
+#define PCI_DEVICE_ID_DEC_TGA2         0x000D
+#define PCI_DEVICE_ID_DEC_FDDI         0x000F
+#define PCI_DEVICE_ID_DEC_TULIP_PLUS   0x0014
+#define PCI_DEVICE_ID_DEC_21142                0x0019
+#define PCI_DEVICE_ID_DEC_21052                0x0021
+#define PCI_DEVICE_ID_DEC_21150                0x0022
+#define PCI_DEVICE_ID_DEC_21152                0x0024
+#define PCI_DEVICE_ID_DEC_21153                0x0025
+#define PCI_DEVICE_ID_DEC_21154                0x0026
+#define PCI_DEVICE_ID_DEC_21285                0x1065
+#define PCI_DEVICE_ID_COMPAQ_42XX      0x0046
+
+#define PCI_VENDOR_ID_CIRRUS           0x1013
+#define PCI_DEVICE_ID_CIRRUS_7548      0x0038
+#define PCI_DEVICE_ID_CIRRUS_5430      0x00a0
+#define PCI_DEVICE_ID_CIRRUS_5434_4    0x00a4
+#define PCI_DEVICE_ID_CIRRUS_5434_8    0x00a8
+#define PCI_DEVICE_ID_CIRRUS_5436      0x00ac
+#define PCI_DEVICE_ID_CIRRUS_5446      0x00b8
+#define PCI_DEVICE_ID_CIRRUS_5480      0x00bc
+#define PCI_DEVICE_ID_CIRRUS_5462      0x00d0
+#define PCI_DEVICE_ID_CIRRUS_5464      0x00d4
+#define PCI_DEVICE_ID_CIRRUS_5465      0x00d6
+#define PCI_DEVICE_ID_CIRRUS_6729      0x1100
+#define PCI_DEVICE_ID_CIRRUS_6832      0x1110
+#define PCI_DEVICE_ID_CIRRUS_7542      0x1200
+#define PCI_DEVICE_ID_CIRRUS_7543      0x1202
+#define PCI_DEVICE_ID_CIRRUS_7541      0x1204
+
+#define PCI_VENDOR_ID_IBM              0x1014
+#define PCI_DEVICE_ID_IBM_FIRE_CORAL   0x000a
+#define PCI_DEVICE_ID_IBM_TR           0x0018
+#define PCI_DEVICE_ID_IBM_82G2675      0x001d
+#define PCI_DEVICE_ID_IBM_MCA          0x0020
+#define PCI_DEVICE_ID_IBM_82351                0x0022
+#define PCI_DEVICE_ID_IBM_PYTHON       0x002d
+#define PCI_DEVICE_ID_IBM_SERVERAID    0x002e
+#define PCI_DEVICE_ID_IBM_TR_WAKE      0x003e
+#define PCI_DEVICE_ID_IBM_MPIC         0x0046
+#define PCI_DEVICE_ID_IBM_3780IDSP     0x007d
+#define PCI_DEVICE_ID_IBM_CHUKAR       0x0096
+#define PCI_DEVICE_ID_IBM_CPC710_PCI64 0x00fc
+#define PCI_DEVICE_ID_IBM_CPC710_PCI32 0x0105
+#define        PCI_DEVICE_ID_IBM_405GP         0x0156
+#define PCI_DEVICE_ID_IBM_SERVERAIDI960        0x01bd
+#define PCI_DEVICE_ID_IBM_MPIC_2       0xffff
+
+#define PCI_VENDOR_ID_COMPEX2          0x101a // pci.ids says "AT&T GIS (NCR)"
+#define PCI_DEVICE_ID_COMPEX2_100VG    0x0005
+
+#define PCI_VENDOR_ID_WD               0x101c
+#define PCI_DEVICE_ID_WD_7197          0x3296
+#define PCI_DEVICE_ID_WD_90C           0xc24a
+
+#define PCI_VENDOR_ID_AMI              0x101e
+#define PCI_DEVICE_ID_AMI_MEGARAID3    0x1960
+#define PCI_DEVICE_ID_AMI_MEGARAID     0x9010
+#define PCI_DEVICE_ID_AMI_MEGARAID2    0x9060
+
+#define PCI_VENDOR_ID_AMD              0x1022
+#define PCI_DEVICE_ID_AMD_LANCE                0x2000
+#define PCI_DEVICE_ID_AMD_LANCE_HOME   0x2001
+#define PCI_DEVICE_ID_AMD_SCSI         0x2020
+#define PCI_DEVICE_ID_AMD_FE_GATE_7006 0x7006
+#define PCI_DEVICE_ID_AMD_FE_GATE_7007 0x7007
+#define PCI_DEVICE_ID_AMD_FE_GATE_700C 0x700C
+#define PCI_DEVICE_ID_AMD_FE_GATE_700D 0x700D
+#define PCI_DEVICE_ID_AMD_FE_GATE_700E 0x700E
+#define PCI_DEVICE_ID_AMD_FE_GATE_700F 0x700F
+#define PCI_DEVICE_ID_AMD_COBRA_7400   0x7400
+#define PCI_DEVICE_ID_AMD_COBRA_7401   0x7401
+#define PCI_DEVICE_ID_AMD_COBRA_7403   0x7403
+#define PCI_DEVICE_ID_AMD_COBRA_7404   0x7404
+#define PCI_DEVICE_ID_AMD_VIPER_7408   0x7408
+#define PCI_DEVICE_ID_AMD_VIPER_7409   0x7409
+#define PCI_DEVICE_ID_AMD_VIPER_740B   0x740B
+#define PCI_DEVICE_ID_AMD_VIPER_740C   0x740C
+#define PCI_DEVICE_ID_AMD_VIPER_7410   0x7410
+#define PCI_DEVICE_ID_AMD_VIPER_7411   0x7411
+#define PCI_DEVICE_ID_AMD_VIPER_7413   0x7413
+#define PCI_DEVICE_ID_AMD_VIPER_7414   0x7414
+#define PCI_DEVICE_ID_AMD_OPUS_7440    0x7440
+#      define PCI_DEVICE_ID_AMD_VIPER_7440     PCI_DEVICE_ID_AMD_OPUS_7440
+#define PCI_DEVICE_ID_AMD_OPUS_7441    0x7441
+#      define PCI_DEVICE_ID_AMD_VIPER_7441     PCI_DEVICE_ID_AMD_OPUS_7441
+#define PCI_DEVICE_ID_AMD_OPUS_7443    0x7443
+#      define PCI_DEVICE_ID_AMD_VIPER_7443     PCI_DEVICE_ID_AMD_OPUS_7443
+#define PCI_DEVICE_ID_AMD_OPUS_7448    0x7448
+# define       PCI_DEVICE_ID_AMD_VIPER_7448    PCI_DEVICE_ID_AMD_OPUS_7448
+#define PCI_DEVICE_ID_AMD_OPUS_7449    0x7449
+#      define PCI_DEVICE_ID_AMD_VIPER_7449     PCI_DEVICE_ID_AMD_OPUS_7449
+#define PCI_DEVICE_ID_AMD_8111_LAN     0x7462
+#define PCI_DEVICE_ID_AMD_8111_IDE     0x7469
+#define PCI_DEVICE_ID_AMD_8111_AC97    0x746d
+#define PCI_DEVICE_ID_AMD_8131_APIC     0x7450
+
+#define PCI_VENDOR_ID_TRIDENT          0x1023
+#define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX        0x2000
+#define PCI_DEVICE_ID_TRIDENT_4DWAVE_NX        0x2001
+#define PCI_DEVICE_ID_TRIDENT_9320     0x9320
+#define PCI_DEVICE_ID_TRIDENT_9388     0x9388
+#define PCI_DEVICE_ID_TRIDENT_9397     0x9397
+#define PCI_DEVICE_ID_TRIDENT_939A     0x939A
+#define PCI_DEVICE_ID_TRIDENT_9520     0x9520
+#define PCI_DEVICE_ID_TRIDENT_9525     0x9525
+#define PCI_DEVICE_ID_TRIDENT_9420     0x9420
+#define PCI_DEVICE_ID_TRIDENT_9440     0x9440
+#define PCI_DEVICE_ID_TRIDENT_9660     0x9660
+#define PCI_DEVICE_ID_TRIDENT_9750     0x9750
+#define PCI_DEVICE_ID_TRIDENT_9850     0x9850
+#define PCI_DEVICE_ID_TRIDENT_9880     0x9880
+#define PCI_DEVICE_ID_TRIDENT_8400     0x8400
+#define PCI_DEVICE_ID_TRIDENT_8420     0x8420
+#define PCI_DEVICE_ID_TRIDENT_8500     0x8500
+
+#define PCI_VENDOR_ID_AI               0x1025
+#define PCI_DEVICE_ID_AI_M1435         0x1435
+
+#define PCI_VENDOR_ID_DELL              0x1028
+
+#define PCI_VENDOR_ID_MATROX           0x102B
+#define PCI_DEVICE_ID_MATROX_MGA_2     0x0518
+#define PCI_DEVICE_ID_MATROX_MIL       0x0519
+#define PCI_DEVICE_ID_MATROX_MYS       0x051A
+#define PCI_DEVICE_ID_MATROX_MIL_2     0x051b
+#define PCI_DEVICE_ID_MATROX_MIL_2_AGP 0x051f
+#define PCI_DEVICE_ID_MATROX_MGA_IMP   0x0d10
+#define PCI_DEVICE_ID_MATROX_G100_MM   0x1000
+#define PCI_DEVICE_ID_MATROX_G100_AGP  0x1001
+#define PCI_DEVICE_ID_MATROX_G200_PCI  0x0520
+#define PCI_DEVICE_ID_MATROX_G200_AGP  0x0521
+#define        PCI_DEVICE_ID_MATROX_G400       0x0525
+#define PCI_DEVICE_ID_MATROX_G550      0x2527
+#define PCI_DEVICE_ID_MATROX_VIA       0x4536
+
+#define PCI_VENDOR_ID_CT               0x102c
+#define PCI_DEVICE_ID_CT_65545         0x00d8
+#define PCI_DEVICE_ID_CT_65548         0x00dc
+#define PCI_DEVICE_ID_CT_65550         0x00e0
+#define PCI_DEVICE_ID_CT_65554         0x00e4
+#define PCI_DEVICE_ID_CT_65555         0x00e5
+
+#define PCI_VENDOR_ID_MIRO             0x1031
+#define PCI_DEVICE_ID_MIRO_36050       0x5601
+
+#define PCI_VENDOR_ID_NEC              0x1033
+#define PCI_DEVICE_ID_NEC_PCX2         0x0046
+#define PCI_DEVICE_ID_NEC_NILE4                0x005a
+#define PCI_DEVICE_ID_NEC_VRC5476       0x009b
+#define PCI_DEVICE_ID_NEC_VRC5477_AC97  0x00a6
+
+#define PCI_VENDOR_ID_FD               0x1036
+#define PCI_DEVICE_ID_FD_36C70         0x0000
+
+#define PCI_VENDOR_ID_SI               0x1039
+#define PCI_DEVICE_ID_SI_5591_AGP      0x0001
+#define PCI_DEVICE_ID_SI_6202          0x0002
+#define PCI_DEVICE_ID_SI_503           0x0008
+#define PCI_DEVICE_ID_SI_ACPI          0x0009
+#define PCI_DEVICE_ID_SI_5597_VGA      0x0200
+#define PCI_DEVICE_ID_SI_6205          0x0205
+#define PCI_DEVICE_ID_SI_501           0x0406
+#define PCI_DEVICE_ID_SI_496           0x0496
+#define PCI_DEVICE_ID_SI_300           0x0300
+#define PCI_DEVICE_ID_SI_315H          0x0310
+#define PCI_DEVICE_ID_SI_315           0x0315
+#define PCI_DEVICE_ID_SI_315PRO                0x0325
+#define PCI_DEVICE_ID_SI_530           0x0530
+#define PCI_DEVICE_ID_SI_540           0x0540
+#define PCI_DEVICE_ID_SI_550           0x0550
+#define PCI_DEVICE_ID_SI_540_VGA       0x5300
+#define PCI_DEVICE_ID_SI_550_VGA       0x5315
+#define PCI_DEVICE_ID_SI_601           0x0601
+#define PCI_DEVICE_ID_SI_620           0x0620
+#define PCI_DEVICE_ID_SI_630           0x0630
+#define PCI_DEVICE_ID_SI_633           0x0633
+#define PCI_DEVICE_ID_SI_635           0x0635
+#define PCI_DEVICE_ID_SI_640           0x0640
+#define PCI_DEVICE_ID_SI_645           0x0645
+#define PCI_DEVICE_ID_SI_646           0x0646
+#define PCI_DEVICE_ID_SI_648           0x0648
+#define PCI_DEVICE_ID_SI_650           0x0650
+#define PCI_DEVICE_ID_SI_651           0x0651
+#define PCI_DEVICE_ID_SI_652           0x0652
+#define PCI_DEVICE_ID_SI_655           0x0655
+#define PCI_DEVICE_ID_SI_730           0x0730
+#define PCI_DEVICE_ID_SI_733           0x0733
+#define PCI_DEVICE_ID_SI_630_VGA       0x6300
+#define PCI_DEVICE_ID_SI_730_VGA       0x7300
+#define PCI_DEVICE_ID_SI_735           0x0735
+#define PCI_DEVICE_ID_SI_740           0x0740
+#define PCI_DEVICE_ID_SI_745           0x0745
+#define PCI_DEVICE_ID_SI_746           0x0746
+#define PCI_DEVICE_ID_SI_748           0x0748
+#define PCI_DEVICE_ID_SI_750           0x0750
+#define PCI_DEVICE_ID_SI_751           0x0751
+#define PCI_DEVICE_ID_SI_752           0x0752
+#define PCI_DEVICE_ID_SI_755            0x0755
+#define PCI_DEVICE_ID_SI_900           0x0900
+#define PCI_DEVICE_ID_SI_5107          0x5107
+#define PCI_DEVICE_ID_SI_5300          0x5300
+#define PCI_DEVICE_ID_SI_5511          0x5511
+#define PCI_DEVICE_ID_SI_5513          0x5513
+#define PCI_DEVICE_ID_SI_5518          0x5518
+#define PCI_DEVICE_ID_SI_5571          0x5571
+#define PCI_DEVICE_ID_SI_5581          0x5581
+#define PCI_DEVICE_ID_SI_5582          0x5582
+#define PCI_DEVICE_ID_SI_5591          0x5591
+#define PCI_DEVICE_ID_SI_5596          0x5596
+#define PCI_DEVICE_ID_SI_5597          0x5597
+#define PCI_DEVICE_ID_SI_5598          0x5598
+#define PCI_DEVICE_ID_SI_5600          0x5600
+#define PCI_DEVICE_ID_SI_6300          0x6300
+#define PCI_DEVICE_ID_SI_6306          0x6306
+#define PCI_DEVICE_ID_SI_6326          0x6326
+#define PCI_DEVICE_ID_SI_7001          0x7001
+#define PCI_DEVICE_ID_SI_7016          0x7016
+
+#define PCI_VENDOR_ID_HP               0x103c
+#define PCI_DEVICE_ID_HP_DONNER_GFX    0x1008
+#define PCI_DEVICE_ID_HP_TACHYON       0x1028
+#define PCI_DEVICE_ID_HP_TACHLITE      0x1029
+#define PCI_DEVICE_ID_HP_J2585A                0x1030
+#define PCI_DEVICE_ID_HP_J2585B                0x1031
+#define PCI_DEVICE_ID_HP_SAS           0x1048
+#define PCI_DEVICE_ID_HP_DIVA1         0x1049
+#define PCI_DEVICE_ID_HP_DIVA2         0x104A
+#define PCI_DEVICE_ID_HP_SP2_0         0x104B
+#define PCI_DEVICE_ID_HP_PCI_LBA       0x1054
+#define PCI_DEVICE_ID_HP_REO_SBA       0x10f0
+#define PCI_DEVICE_ID_HP_REO_IOC       0x10f1
+#define PCI_DEVICE_ID_HP_ZX1_SBA       0x1229
+#define PCI_DEVICE_ID_HP_ZX1_IOC       0x122a
+#define PCI_DEVICE_ID_HP_PCIX_LBA      0x122e
+#define PCI_DEVICE_ID_HP_SX1000_IOC    0x127c
+
+#define PCI_VENDOR_ID_PCTECH           0x1042
+#define PCI_DEVICE_ID_PCTECH_RZ1000    0x1000
+#define PCI_DEVICE_ID_PCTECH_RZ1001    0x1001
+#define PCI_DEVICE_ID_PCTECH_SAMURAI_0 0x3000
+#define PCI_DEVICE_ID_PCTECH_SAMURAI_1 0x3010
+#define PCI_DEVICE_ID_PCTECH_SAMURAI_IDE 0x3020
+
+#define PCI_VENDOR_ID_ASUSTEK          0x1043
+#define PCI_DEVICE_ID_ASUSTEK_0675     0x0675
+
+#define PCI_VENDOR_ID_DPT              0x1044
+#define PCI_DEVICE_ID_DPT              0xa400
+
+#define PCI_VENDOR_ID_OPTI             0x1045
+#define PCI_DEVICE_ID_OPTI_92C178      0xc178
+#define PCI_DEVICE_ID_OPTI_82C557      0xc557
+#define PCI_DEVICE_ID_OPTI_82C558      0xc558
+#define PCI_DEVICE_ID_OPTI_82C621      0xc621
+#define PCI_DEVICE_ID_OPTI_82C700      0xc700
+#define PCI_DEVICE_ID_OPTI_82C701      0xc701
+#define PCI_DEVICE_ID_OPTI_82C814      0xc814
+#define PCI_DEVICE_ID_OPTI_82C822      0xc822
+#define PCI_DEVICE_ID_OPTI_82C861      0xc861
+#define PCI_DEVICE_ID_OPTI_82C825      0xd568
+
+#define PCI_VENDOR_ID_ELSA             0x1048
+#define PCI_DEVICE_ID_ELSA_MICROLINK   0x1000
+#define PCI_DEVICE_ID_ELSA_QS3000      0x3000
+
+#define PCI_VENDOR_ID_SGS              0x104a
+#define PCI_DEVICE_ID_SGS_2000         0x0008
+#define PCI_DEVICE_ID_SGS_1764         0x0009
+
+#define PCI_VENDOR_ID_BUSLOGIC               0x104B
+#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140
+#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER    0x1040
+#define PCI_DEVICE_ID_BUSLOGIC_FLASHPOINT     0x8130
+
+#define PCI_VENDOR_ID_TI               0x104c
+#define PCI_DEVICE_ID_TI_TVP4010       0x3d04
+#define PCI_DEVICE_ID_TI_TVP4020       0x3d07
+#define PCI_DEVICE_ID_TI_1130          0xac12
+#define PCI_DEVICE_ID_TI_1031          0xac13
+#define PCI_DEVICE_ID_TI_1131          0xac15
+#define PCI_DEVICE_ID_TI_1250          0xac16
+#define PCI_DEVICE_ID_TI_1220          0xac17
+#define PCI_DEVICE_ID_TI_1221          0xac19
+#define PCI_DEVICE_ID_TI_1210          0xac1a
+#define PCI_DEVICE_ID_TI_1410          0xac50
+#define PCI_DEVICE_ID_TI_1450          0xac1b
+#define PCI_DEVICE_ID_TI_1225          0xac1c
+#define PCI_DEVICE_ID_TI_1251A         0xac1d
+#define PCI_DEVICE_ID_TI_1211          0xac1e
+#define PCI_DEVICE_ID_TI_1251B         0xac1f
+#define PCI_DEVICE_ID_TI_4410          0xac41
+#define PCI_DEVICE_ID_TI_4451          0xac42
+#define PCI_DEVICE_ID_TI_1420          0xac51
+
+#define PCI_VENDOR_ID_SONY             0x104d
+#define PCI_DEVICE_ID_SONY_CXD3222     0x8039
+
+#define PCI_VENDOR_ID_OAK              0x104e
+#define PCI_DEVICE_ID_OAK_OTI107       0x0107
+
+/* Winbond have two vendor IDs! See 0x10ad as well */
+#define PCI_VENDOR_ID_WINBOND2         0x1050
+#define PCI_DEVICE_ID_WINBOND2_89C940  0x0940
+#define PCI_DEVICE_ID_WINBOND2_89C940F 0x5a5a
+#define PCI_DEVICE_ID_WINBOND2_6692    0x6692
+
+#define PCI_VENDOR_ID_ANIGMA           0x1051
+#define PCI_DEVICE_ID_ANIGMA_MC145575  0x0100
+  
+#define PCI_VENDOR_ID_EFAR             0x1055
+#define PCI_DEVICE_ID_EFAR_SLC90E66_1  0x9130
+#define PCI_DEVICE_ID_EFAR_SLC90E66_0  0x9460
+#define PCI_DEVICE_ID_EFAR_SLC90E66_2  0x9462
+#define PCI_DEVICE_ID_EFAR_SLC90E66_3  0x9463
+
+#define PCI_VENDOR_ID_MOTOROLA         0x1057
+#define PCI_VENDOR_ID_MOTOROLA_OOPS    0x1507
+#define PCI_DEVICE_ID_MOTOROLA_MPC105  0x0001
+#define PCI_DEVICE_ID_MOTOROLA_MPC106  0x0002
+#define PCI_DEVICE_ID_MOTOROLA_MPC107  0x0004
+#define PCI_DEVICE_ID_MOTOROLA_RAVEN   0x4801
+#define PCI_DEVICE_ID_MOTOROLA_FALCON  0x4802
+#define PCI_DEVICE_ID_MOTOROLA_HAWK    0x4803
+#define PCI_DEVICE_ID_MOTOROLA_CPX8216 0x4806
+
+#define PCI_VENDOR_ID_PROMISE          0x105a
+#define PCI_DEVICE_ID_PROMISE_20265    0x0d30
+#define PCI_DEVICE_ID_PROMISE_20267    0x4d30
+#define PCI_DEVICE_ID_PROMISE_20246    0x4d33
+#define PCI_DEVICE_ID_PROMISE_20262    0x4d38
+#define PCI_DEVICE_ID_PROMISE_20263    0x0D38
+#define PCI_DEVICE_ID_PROMISE_20268    0x4d68
+#define PCI_DEVICE_ID_PROMISE_20270    0x6268
+#define PCI_DEVICE_ID_PROMISE_20269    0x4d69
+#define PCI_DEVICE_ID_PROMISE_20271    0x6269
+#define PCI_DEVICE_ID_PROMISE_20275    0x1275
+#define PCI_DEVICE_ID_PROMISE_20276    0x5275
+#define PCI_DEVICE_ID_PROMISE_20277    0x7275
+#define PCI_DEVICE_ID_PROMISE_5300     0x5300
+
+#define PCI_VENDOR_ID_N9               0x105d
+#define PCI_DEVICE_ID_N9_I128          0x2309
+#define PCI_DEVICE_ID_N9_I128_2                0x2339
+#define PCI_DEVICE_ID_N9_I128_T2R      0x493d
+
+#define PCI_VENDOR_ID_UMC              0x1060
+#define PCI_DEVICE_ID_UMC_UM8673F      0x0101
+#define PCI_DEVICE_ID_UMC_UM8891A      0x0891
+#define PCI_DEVICE_ID_UMC_UM8886BF     0x673a
+#define PCI_DEVICE_ID_UMC_UM8886A      0x886a
+#define PCI_DEVICE_ID_UMC_UM8881F      0x8881
+#define PCI_DEVICE_ID_UMC_UM8886F      0x8886
+#define PCI_DEVICE_ID_UMC_UM9017F      0x9017
+#define PCI_DEVICE_ID_UMC_UM8886N      0xe886
+#define PCI_DEVICE_ID_UMC_UM8891N      0xe891
+
+#define PCI_VENDOR_ID_X                        0x1061
+#define PCI_DEVICE_ID_X_AGX016         0x0001
+
+#define PCI_VENDOR_ID_MYLEX            0x1069
+#define PCI_DEVICE_ID_MYLEX_DAC960_P   0x0001
+#define PCI_DEVICE_ID_MYLEX_DAC960_PD  0x0002
+#define PCI_DEVICE_ID_MYLEX_DAC960_PG  0x0010
+#define PCI_DEVICE_ID_MYLEX_DAC960_LA  0x0020
+#define PCI_DEVICE_ID_MYLEX_DAC960_LP  0x0050
+#define PCI_DEVICE_ID_MYLEX_DAC960_BA  0xBA56
+
+#define PCI_VENDOR_ID_PICOP            0x1066
+#define PCI_DEVICE_ID_PICOP_PT86C52X   0x0001
+#define PCI_DEVICE_ID_PICOP_PT80C524   0x8002
+
+#define PCI_VENDOR_ID_APPLE            0x106b
+#define PCI_DEVICE_ID_APPLE_BANDIT     0x0001
+#define PCI_DEVICE_ID_APPLE_GC         0x0002
+#define PCI_DEVICE_ID_APPLE_HYDRA      0x000e
+#define PCI_DEVICE_ID_APPLE_UNI_N_FW   0x0018
+#define PCI_DEVICE_ID_APPLE_KL_USB     0x0019
+#define PCI_DEVICE_ID_APPLE_UNI_N_AGP  0x0020
+#define PCI_DEVICE_ID_APPLE_UNI_N_GMAC 0x0021
+#define PCI_DEVICE_ID_APPLE_KEYLARGO   0x0022
+#define PCI_DEVICE_ID_APPLE_UNI_N_GMACP        0x0024
+#define PCI_DEVICE_ID_APPLE_KEYLARGO_P 0x0025
+#define PCI_DEVICE_ID_APPLE_KL_USB_P   0x0026
+#define PCI_DEVICE_ID_APPLE_UNI_N_AGP_P        0x0027
+#define PCI_DEVICE_ID_APPLE_UNI_N_AGP15        0x002d
+#define PCI_DEVICE_ID_APPLE_UNI_N_FW2  0x0030
+
+#define PCI_VENDOR_ID_YAMAHA           0x1073
+#define PCI_DEVICE_ID_YAMAHA_724       0x0004
+#define PCI_DEVICE_ID_YAMAHA_724F      0x000d
+#define PCI_DEVICE_ID_YAMAHA_740       0x000a
+#define PCI_DEVICE_ID_YAMAHA_740C      0x000c
+#define PCI_DEVICE_ID_YAMAHA_744       0x0010
+#define PCI_DEVICE_ID_YAMAHA_754       0x0012
+
+#define PCI_VENDOR_ID_NEXGEN           0x1074
+#define PCI_DEVICE_ID_NEXGEN_82C501    0x4e78
+
+#define PCI_VENDOR_ID_QLOGIC           0x1077
+#define PCI_DEVICE_ID_QLOGIC_ISP1020   0x1020
+#define PCI_DEVICE_ID_QLOGIC_ISP1022   0x1022
+#define PCI_DEVICE_ID_QLOGIC_ISP2100   0x2100
+#define PCI_DEVICE_ID_QLOGIC_ISP2200   0x2200
+
+#define PCI_VENDOR_ID_CYRIX            0x1078
+#define PCI_DEVICE_ID_CYRIX_5510       0x0000
+#define PCI_DEVICE_ID_CYRIX_PCI_MASTER 0x0001
+#define PCI_DEVICE_ID_CYRIX_5520       0x0002
+#define PCI_DEVICE_ID_CYRIX_5530_LEGACY        0x0100
+#define PCI_DEVICE_ID_CYRIX_5530_SMI   0x0101
+#define PCI_DEVICE_ID_CYRIX_5530_IDE   0x0102
+#define PCI_DEVICE_ID_CYRIX_5530_AUDIO 0x0103
+#define PCI_DEVICE_ID_CYRIX_5530_VIDEO 0x0104
+
+#define PCI_VENDOR_ID_LEADTEK          0x107d
+#define PCI_DEVICE_ID_LEADTEK_805      0x0000
+
+#define PCI_VENDOR_ID_INTERPHASE       0x107e
+#define PCI_DEVICE_ID_INTERPHASE_5526  0x0004
+#define PCI_DEVICE_ID_INTERPHASE_55x6  0x0005
+#define PCI_DEVICE_ID_INTERPHASE_5575  0x0008
+
+#define PCI_VENDOR_ID_CONTAQ           0x1080
+#define PCI_DEVICE_ID_CONTAQ_82C599    0x0600
+#define PCI_DEVICE_ID_CONTAQ_82C693    0xc693
+
+#define PCI_VENDOR_ID_FOREX            0x1083
+
+#define PCI_VENDOR_ID_OLICOM           0x108d
+#define PCI_DEVICE_ID_OLICOM_OC3136    0x0001
+#define PCI_DEVICE_ID_OLICOM_OC2315    0x0011
+#define PCI_DEVICE_ID_OLICOM_OC2325    0x0012
+#define PCI_DEVICE_ID_OLICOM_OC2183    0x0013
+#define PCI_DEVICE_ID_OLICOM_OC2326    0x0014
+#define PCI_DEVICE_ID_OLICOM_OC6151    0x0021
+
+#define PCI_VENDOR_ID_SUN              0x108e
+#define PCI_DEVICE_ID_SUN_EBUS         0x1000
+#define PCI_DEVICE_ID_SUN_HAPPYMEAL    0x1001
+#define PCI_DEVICE_ID_SUN_RIO_EBUS     0x1100
+#define PCI_DEVICE_ID_SUN_RIO_GEM      0x1101
+#define PCI_DEVICE_ID_SUN_RIO_1394     0x1102
+#define PCI_DEVICE_ID_SUN_RIO_USB      0x1103
+#define PCI_DEVICE_ID_SUN_GEM          0x2bad
+#define PCI_DEVICE_ID_SUN_SIMBA                0x5000
+#define PCI_DEVICE_ID_SUN_PBM          0x8000
+#define PCI_DEVICE_ID_SUN_SCHIZO       0x8001
+#define PCI_DEVICE_ID_SUN_SABRE                0xa000
+#define PCI_DEVICE_ID_SUN_HUMMINGBIRD  0xa001
+#define PCI_DEVICE_ID_SUN_TOMATILLO    0xa801
+
+#define PCI_VENDOR_ID_CMD              0x1095
+#define PCI_DEVICE_ID_SII_1210SA       0x0240
+
+#define PCI_DEVICE_ID_CMD_640          0x0640
+#define PCI_DEVICE_ID_CMD_643          0x0643
+#define PCI_DEVICE_ID_CMD_646          0x0646
+#define PCI_DEVICE_ID_CMD_647          0x0647
+#define PCI_DEVICE_ID_CMD_648          0x0648
+#define PCI_DEVICE_ID_CMD_649          0x0649
+#define PCI_DEVICE_ID_CMD_670          0x0670
+
+#define PCI_DEVICE_ID_SII_680          0x0680
+#define PCI_DEVICE_ID_SII_3112         0x3112
+
+#define PCI_VENDOR_ID_VISION           0x1098
+#define PCI_DEVICE_ID_VISION_QD8500    0x0001
+#define PCI_DEVICE_ID_VISION_QD8580    0x0002
+
+#define PCI_VENDOR_ID_BROOKTREE                0x109e
+#define PCI_DEVICE_ID_BROOKTREE_848    0x0350
+#define PCI_DEVICE_ID_BROOKTREE_849A   0x0351
+#define PCI_DEVICE_ID_BROOKTREE_878_1  0x036e
+#define PCI_DEVICE_ID_BROOKTREE_878    0x0878
+#define PCI_DEVICE_ID_BROOKTREE_8474   0x8474
+
+#define PCI_VENDOR_ID_SIERRA           0x10a8
+#define PCI_DEVICE_ID_SIERRA_STB       0x0000
+
+#define PCI_VENDOR_ID_SGI              0x10a9
+#define PCI_DEVICE_ID_SGI_IOC3         0x0003
+#define PCI_DEVICE_ID_SGI_IOC4         0x100a
+
+#define PCI_VENDOR_ID_ACC              0x10aa
+#define PCI_DEVICE_ID_ACC_2056         0x0000
+
+#define PCI_VENDOR_ID_WINBOND          0x10ad
+#define PCI_DEVICE_ID_WINBOND_83769    0x0001
+#define PCI_DEVICE_ID_WINBOND_82C105   0x0105
+#define PCI_DEVICE_ID_WINBOND_83C553   0x0565
+
+#define PCI_VENDOR_ID_DATABOOK         0x10b3
+#define PCI_DEVICE_ID_DATABOOK_87144   0xb106
+
+#define PCI_VENDOR_ID_PLX              0x10b5
+#define PCI_DEVICE_ID_PLX_R685         0x1030
+#define PCI_DEVICE_ID_PLX_ROMULUS      0x106a
+#define PCI_DEVICE_ID_PLX_SPCOM800     0x1076
+#define PCI_DEVICE_ID_PLX_1077         0x1077
+#define PCI_DEVICE_ID_PLX_SPCOM200     0x1103
+#define PCI_DEVICE_ID_PLX_DJINN_ITOO   0x1151
+#define PCI_DEVICE_ID_PLX_R753         0x1152
+#define PCI_DEVICE_ID_PLX_9050         0x9050
+#define PCI_DEVICE_ID_PLX_9060         0x9060
+#define PCI_DEVICE_ID_PLX_9060ES       0x906E
+#define PCI_DEVICE_ID_PLX_9060SD       0x906D
+#define PCI_DEVICE_ID_PLX_9080         0x9080
+#define PCI_DEVICE_ID_PLX_GTEK_SERIAL2 0xa001
+
+#define PCI_VENDOR_ID_MADGE            0x10b6
+#define PCI_DEVICE_ID_MADGE_MK2                0x0002
+#define PCI_DEVICE_ID_MADGE_C155S      0x1001
+
+#define PCI_VENDOR_ID_3COM             0x10b7
+#define PCI_DEVICE_ID_3COM_3C985       0x0001
+#define PCI_DEVICE_ID_3COM_3C339       0x3390
+#define PCI_DEVICE_ID_3COM_3C590       0x5900
+#define PCI_DEVICE_ID_3COM_3C595TX     0x5950
+#define PCI_DEVICE_ID_3COM_3C595T4     0x5951
+#define PCI_DEVICE_ID_3COM_3C595MII    0x5952
+#define PCI_DEVICE_ID_3COM_3C900TPO    0x9000
+#define PCI_DEVICE_ID_3COM_3C900COMBO  0x9001
+#define PCI_DEVICE_ID_3COM_3C905TX     0x9050
+#define PCI_DEVICE_ID_3COM_3C905T4     0x9051
+#define PCI_DEVICE_ID_3COM_3C905B_TX   0x9055
+#define PCI_DEVICE_ID_3COM_3CR990      0x9900
+#define PCI_DEVICE_ID_3COM_3CR990_TX_95        0x9902
+#define PCI_DEVICE_ID_3COM_3CR990_TX_97        0x9903
+#define PCI_DEVICE_ID_3COM_3CR990B     0x9904
+#define PCI_DEVICE_ID_3COM_3CR990_FX   0x9905
+#define PCI_DEVICE_ID_3COM_3CR990SVR95 0x9908
+#define PCI_DEVICE_ID_3COM_3CR990SVR97 0x9909
+#define PCI_DEVICE_ID_3COM_3CR990SVR   0x990a
+
+#define PCI_VENDOR_ID_SMC              0x10b8
+#define PCI_DEVICE_ID_SMC_EPIC100      0x0005
+
+#define PCI_VENDOR_ID_AL               0x10b9
+#define PCI_DEVICE_ID_AL_M1445         0x1445
+#define PCI_DEVICE_ID_AL_M1449         0x1449
+#define PCI_DEVICE_ID_AL_M1451         0x1451
+#define PCI_DEVICE_ID_AL_M1461         0x1461
+#define PCI_DEVICE_ID_AL_M1489         0x1489
+#define PCI_DEVICE_ID_AL_M1511         0x1511
+#define PCI_DEVICE_ID_AL_M1513         0x1513
+#define PCI_DEVICE_ID_AL_M1521         0x1521
+#define PCI_DEVICE_ID_AL_M1523         0x1523
+#define PCI_DEVICE_ID_AL_M1531         0x1531
+#define PCI_DEVICE_ID_AL_M1533         0x1533
+#define PCI_DEVICE_ID_AL_M1535                 0x1535
+#define PCI_DEVICE_ID_AL_M1541         0x1541
+#define PCI_DEVICE_ID_AL_M1621          0x1621
+#define PCI_DEVICE_ID_AL_M1631          0x1631
+#define PCI_DEVICE_ID_AL_M1641          0x1641
+#define PCI_DEVICE_ID_AL_M1644          0x1644
+#define PCI_DEVICE_ID_AL_M1647          0x1647
+#define PCI_DEVICE_ID_AL_M1651          0x1651
+#define PCI_DEVICE_ID_AL_M1543         0x1543
+#define PCI_DEVICE_ID_AL_M3307         0x3307
+#define PCI_DEVICE_ID_AL_M4803         0x5215
+#define PCI_DEVICE_ID_AL_M5219         0x5219
+#define PCI_DEVICE_ID_AL_M5229         0x5229
+#define PCI_DEVICE_ID_AL_M5237         0x5237
+#define PCI_DEVICE_ID_AL_M5243         0x5243
+#define PCI_DEVICE_ID_AL_M5451         0x5451
+#define PCI_DEVICE_ID_AL_M7101         0x7101
+
+#define PCI_VENDOR_ID_MITSUBISHI       0x10ba
+
+#define PCI_VENDOR_ID_SURECOM          0x10bd
+#define PCI_DEVICE_ID_SURECOM_NE34     0x0e34
+
+#define PCI_VENDOR_ID_NEOMAGIC         0x10c8
+#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_NM2070 0x0001
+#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128V 0x0002
+#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZV 0x0003
+#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_NM2160 0x0004
+#define PCI_DEVICE_ID_NEOMAGIC_MAGICMEDIA_256AV       0x0005
+#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZVPLUS   0x0083
+
+#define PCI_VENDOR_ID_ASP              0x10cd
+#define PCI_DEVICE_ID_ASP_ABP940       0x1200
+#define PCI_DEVICE_ID_ASP_ABP940U      0x1300
+#define PCI_DEVICE_ID_ASP_ABP940UW     0x2300
+
+#define PCI_VENDOR_ID_MACRONIX         0x10d9
+#define PCI_DEVICE_ID_MACRONIX_MX98713 0x0512
+#define PCI_DEVICE_ID_MACRONIX_MX987x5 0x0531
+
+#define PCI_VENDOR_ID_TCONRAD          0x10da
+#define PCI_DEVICE_ID_TCONRAD_TOKENRING        0x0508
+
+#define PCI_VENDOR_ID_CERN             0x10dc
+#define PCI_DEVICE_ID_CERN_SPSB_PMC    0x0001
+#define PCI_DEVICE_ID_CERN_SPSB_PCI    0x0002
+#define PCI_DEVICE_ID_CERN_HIPPI_DST   0x0021
+#define PCI_DEVICE_ID_CERN_HIPPI_SRC   0x0022
+
+#define PCI_VENDOR_ID_NVIDIA                   0x10de
+#define PCI_DEVICE_ID_NVIDIA_TNT               0x0020
+#define PCI_DEVICE_ID_NVIDIA_TNT2              0x0028
+#define PCI_DEVICE_ID_NVIDIA_UTNT2             0x0029
+#define PCI_DEVICE_ID_NVIDIA_VTNT2             0x002C
+#define PCI_DEVICE_ID_NVIDIA_UVTNT2            0x002D
+#define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE       0x0065
+#define PCI_DEVICE_ID_NVIDIA_ITNT2             0x00A0
+#define PCI_DEVICE_ID_NVIDIA_NFORCE3           0x00d1
+#define PCI_DEVICE_ID_NVIDIA_NFORCE3S          0x00e1
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE_SDR       0x0100
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR       0x0101
+#define PCI_DEVICE_ID_NVIDIA_QUADRO            0x0103
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX       0x0110
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX2      0x0111
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO       0x0112
+#define PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR       0x0113
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS      0x0150
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2     0x0151
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA    0x0152
+#define PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO       0x0153
+#define PCI_DEVICE_ID_NVIDIA_IGEFORCE2         0x01a0
+#define PCI_DEVICE_ID_NVIDIA_NFORCE            0x01a4
+#define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE                0x01bc
+#define PCI_DEVICE_ID_NVIDIA_NFORCE2           0x01e0
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE3          0x0200
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE3_1                0x0201
+#define PCI_DEVICE_ID_NVIDIA_GEFORCE3_2                0x0202
+#define PCI_DEVICE_ID_NVIDIA_QUADRO_DDC                0x0203
+
+#define PCI_VENDOR_ID_IMS              0x10e0
+#define PCI_DEVICE_ID_IMS_8849         0x8849
+#define PCI_DEVICE_ID_IMS_TT128                0x9128
+#define PCI_DEVICE_ID_IMS_TT3D         0x9135
+
+#define PCI_VENDOR_ID_TEKRAM2          0x10e1
+#define PCI_DEVICE_ID_TEKRAM2_690c     0x690c
+
+#define PCI_VENDOR_ID_TUNDRA           0x10e3
+#define PCI_DEVICE_ID_TUNDRA_CA91C042  0x0000
+
+#define PCI_VENDOR_ID_AMCC             0x10e8
+#define PCI_DEVICE_ID_AMCC_MYRINET     0x8043
+#define PCI_DEVICE_ID_AMCC_PARASTATION 0x8062
+#define PCI_DEVICE_ID_AMCC_S5933       0x807d
+#define PCI_DEVICE_ID_AMCC_S5933_HEPC3 0x809c
+
+#define PCI_VENDOR_ID_INTERG           0x10ea
+#define PCI_DEVICE_ID_INTERG_1680      0x1680
+#define PCI_DEVICE_ID_INTERG_1682      0x1682
+#define PCI_DEVICE_ID_INTERG_2000      0x2000
+#define PCI_DEVICE_ID_INTERG_2010      0x2010
+#define PCI_DEVICE_ID_INTERG_5000      0x5000
+#define PCI_DEVICE_ID_INTERG_5050      0x5050
+
+#define PCI_VENDOR_ID_REALTEK          0x10ec
+#define PCI_DEVICE_ID_REALTEK_8029     0x8029
+#define PCI_DEVICE_ID_REALTEK_8129     0x8129
+#define PCI_DEVICE_ID_REALTEK_8139     0x8139
+#define PCI_DEVICE_ID_REALTEK_8169     0x8169
+
+#define PCI_VENDOR_ID_XILINX           0x10ee
+#define PCI_DEVICE_ID_TURBOPAM         0x4020
+
+#define PCI_VENDOR_ID_TRUEVISION       0x10fa
+#define PCI_DEVICE_ID_TRUEVISION_T1000 0x000c
+
+#define PCI_VENDOR_ID_INIT             0x1101
+#define PCI_DEVICE_ID_INIT_320P                0x9100
+#define PCI_DEVICE_ID_INIT_360P                0x9500
+
+#define PCI_VENDOR_ID_CREATIVE         0x1102 // duplicate: ECTIVA
+#define PCI_DEVICE_ID_CREATIVE_EMU10K1 0x0002
+
+#define PCI_VENDOR_ID_ECTIVA           0x1102 // duplicate: CREATIVE
+#define PCI_DEVICE_ID_ECTIVA_EV1938    0x8938
+
+#define PCI_VENDOR_ID_TTI              0x1103
+#define PCI_DEVICE_ID_TTI_HPT343       0x0003
+#define PCI_DEVICE_ID_TTI_HPT366       0x0004
+#define PCI_DEVICE_ID_TTI_HPT372       0x0005
+#define PCI_DEVICE_ID_TTI_HPT302       0x0006
+#define PCI_DEVICE_ID_TTI_HPT371       0x0007
+#define PCI_DEVICE_ID_TTI_HPT374       0x0008
+#define PCI_DEVICE_ID_TTI_HPT372N      0x0009  // appoarently a 372N variant?
+
+#define PCI_VENDOR_ID_VIA              0x1106
+#define PCI_DEVICE_ID_VIA_8363_0       0x0305
+#define PCI_DEVICE_ID_VIA_8371_0       0x0391
+#define PCI_DEVICE_ID_VIA_8501_0       0x0501
+#define PCI_DEVICE_ID_VIA_82C505       0x0505
+#define PCI_DEVICE_ID_VIA_82C561       0x0561
+#define PCI_DEVICE_ID_VIA_82C586_1     0x0571
+#define PCI_DEVICE_ID_VIA_82C576       0x0576
+#define PCI_DEVICE_ID_VIA_82C585       0x0585
+#define PCI_DEVICE_ID_VIA_82C586_0     0x0586
+#define PCI_DEVICE_ID_VIA_82C595       0x0595
+#define PCI_DEVICE_ID_VIA_82C596       0x0596
+#define PCI_DEVICE_ID_VIA_82C597_0     0x0597
+#define PCI_DEVICE_ID_VIA_82C598_0     0x0598
+#define PCI_DEVICE_ID_VIA_8601_0       0x0601
+#define PCI_DEVICE_ID_VIA_8605_0       0x0605
+#define PCI_DEVICE_ID_VIA_82C680       0x0680
+#define PCI_DEVICE_ID_VIA_82C686       0x0686
+#define PCI_DEVICE_ID_VIA_82C691       0x0691
+#define PCI_DEVICE_ID_VIA_82C693       0x0693
+#define PCI_DEVICE_ID_VIA_82C693_1     0x0698
+#define PCI_DEVICE_ID_VIA_82C926       0x0926
+#define PCI_DEVICE_ID_VIA_82C576_1     0x1571
+#define PCI_DEVICE_ID_VIA_82C595_97    0x1595
+#define PCI_DEVICE_ID_VIA_82C586_2     0x3038
+#define PCI_DEVICE_ID_VIA_82C586_3     0x3040
+#define PCI_DEVICE_ID_VIA_6305         0x3044
+#define PCI_DEVICE_ID_VIA_82C596_3     0x3050
+#define PCI_DEVICE_ID_VIA_82C596B_3    0x3051
+#define PCI_DEVICE_ID_VIA_82C686_4     0x3057
+#define PCI_DEVICE_ID_VIA_82C686_5     0x3058
+#define PCI_DEVICE_ID_VIA_8233_5       0x3059
+#define PCI_DEVICE_ID_VIA_8233_7       0x3065
+#define PCI_DEVICE_ID_VIA_82C686_6     0x3068
+#define PCI_DEVICE_ID_VIA_8233_0       0x3074
+#define PCI_DEVICE_ID_VIA_8633_0       0x3091
+#define PCI_DEVICE_ID_VIA_8367_0       0x3099
+#define PCI_DEVICE_ID_VIA_8622         0x3102
+#define PCI_DEVICE_ID_VIA_8233C_0      0x3109
+#define PCI_DEVICE_ID_VIA_8361         0x3112
+#define PCI_DEVICE_ID_VIA_8375         0x3116
+#define PCI_DEVICE_ID_VIA_CLE266       0x3123
+#define PCI_DEVICE_ID_VIA_8233A                0x3147
+#define PCI_DEVICE_ID_VIA_P4M266       0x3148
+#define PCI_DEVICE_ID_VIA_8237_SATA    0x3149
+#define PCI_DEVICE_ID_VIA_P4X333       0x3168
+#define PCI_DEVICE_ID_VIA_8235         0x3177
+#define PCI_DEVICE_ID_VIA_8377_0       0x3189
+#define PCI_DEVICE_ID_VIA_K8T400M_0    0x3188
+#define PCI_DEVICE_ID_VIA_8237         0x3227
+#define PCI_DEVICE_ID_VIA_86C100A      0x6100
+#define PCI_DEVICE_ID_VIA_8231         0x8231
+#define PCI_DEVICE_ID_VIA_8231_4       0x8235
+#define PCI_DEVICE_ID_VIA_8365_1       0x8305
+#define PCI_DEVICE_ID_VIA_8371_1       0x8391
+#define PCI_DEVICE_ID_VIA_8501_1       0x8501
+#define PCI_DEVICE_ID_VIA_82C597_1     0x8597
+#define PCI_DEVICE_ID_VIA_82C598_1     0x8598
+#define PCI_DEVICE_ID_VIA_8601_1       0x8601
+#define PCI_DEVICE_ID_VIA_8505_1       0x8605
+#define PCI_DEVICE_ID_VIA_8633_1       0xB091
+#define PCI_DEVICE_ID_VIA_8367_1       0xB099
+
+#define PCI_VENDOR_ID_SIEMENS           0x110A
+#define PCI_DEVICE_ID_SIEMENS_DSCC4     0x2102
+
+#define PCI_VENDOR_ID_SMC2             0x1113
+#define PCI_DEVICE_ID_SMC2_1211TX      0x1211
+
+#define PCI_VENDOR_ID_VORTEX           0x1119
+#define PCI_DEVICE_ID_VORTEX_GDT60x0   0x0000
+#define PCI_DEVICE_ID_VORTEX_GDT6000B  0x0001
+#define PCI_DEVICE_ID_VORTEX_GDT6x10   0x0002
+#define PCI_DEVICE_ID_VORTEX_GDT6x20   0x0003
+#define PCI_DEVICE_ID_VORTEX_GDT6530   0x0004
+#define PCI_DEVICE_ID_VORTEX_GDT6550   0x0005
+#define PCI_DEVICE_ID_VORTEX_GDT6x17   0x0006
+#define PCI_DEVICE_ID_VORTEX_GDT6x27   0x0007
+#define PCI_DEVICE_ID_VORTEX_GDT6537   0x0008
+#define PCI_DEVICE_ID_VORTEX_GDT6557   0x0009
+#define PCI_DEVICE_ID_VORTEX_GDT6x15   0x000a
+#define PCI_DEVICE_ID_VORTEX_GDT6x25   0x000b
+#define PCI_DEVICE_ID_VORTEX_GDT6535   0x000c
+#define PCI_DEVICE_ID_VORTEX_GDT6555   0x000d
+#define PCI_DEVICE_ID_VORTEX_GDT6x17RP 0x0100
+#define PCI_DEVICE_ID_VORTEX_GDT6x27RP 0x0101
+#define PCI_DEVICE_ID_VORTEX_GDT6537RP 0x0102
+#define PCI_DEVICE_ID_VORTEX_GDT6557RP 0x0103
+#define PCI_DEVICE_ID_VORTEX_GDT6x11RP 0x0104
+#define PCI_DEVICE_ID_VORTEX_GDT6x21RP 0x0105
+#define PCI_DEVICE_ID_VORTEX_GDT6x17RP1        0x0110
+#define PCI_DEVICE_ID_VORTEX_GDT6x27RP1        0x0111
+#define PCI_DEVICE_ID_VORTEX_GDT6537RP1        0x0112
+#define PCI_DEVICE_ID_VORTEX_GDT6557RP1        0x0113
+#define PCI_DEVICE_ID_VORTEX_GDT6x11RP1        0x0114
+#define PCI_DEVICE_ID_VORTEX_GDT6x21RP1        0x0115
+#define PCI_DEVICE_ID_VORTEX_GDT6x17RP2        0x0120
+#define PCI_DEVICE_ID_VORTEX_GDT6x27RP2        0x0121
+#define PCI_DEVICE_ID_VORTEX_GDT6537RP2        0x0122
+#define PCI_DEVICE_ID_VORTEX_GDT6557RP2        0x0123
+#define PCI_DEVICE_ID_VORTEX_GDT6x11RP2        0x0124
+#define PCI_DEVICE_ID_VORTEX_GDT6x21RP2        0x0125
+
+#define PCI_VENDOR_ID_EF               0x111a
+#define PCI_DEVICE_ID_EF_ATM_FPGA      0x0000
+#define PCI_DEVICE_ID_EF_ATM_ASIC      0x0002
+
+#define PCI_VENDOR_ID_IDT              0x111d
+#define PCI_DEVICE_ID_IDT_IDT77201     0x0001
+
+#define PCI_VENDOR_ID_FORE             0x1127
+#define PCI_DEVICE_ID_FORE_PCA200PC    0x0210
+#define PCI_DEVICE_ID_FORE_PCA200E     0x0300
+
+#define PCI_VENDOR_ID_IMAGINGTECH      0x112f
+#define PCI_DEVICE_ID_IMAGINGTECH_ICPCI        0x0000
+
+#define PCI_VENDOR_ID_PHILIPS          0x1131
+#define PCI_DEVICE_ID_PHILIPS_SAA7145  0x7145
+#define PCI_DEVICE_ID_PHILIPS_SAA7146  0x7146
+#define PCI_DEVICE_ID_PHILIPS_SAA9730  0x9730
+
+#define PCI_VENDOR_ID_EICON            0x1133
+#define PCI_DEVICE_ID_EICON_DIVA20PRO  0xe001
+#define PCI_DEVICE_ID_EICON_DIVA20     0xe002
+#define PCI_DEVICE_ID_EICON_DIVA20PRO_U        0xe003
+#define PCI_DEVICE_ID_EICON_DIVA20_U   0xe004
+#define PCI_DEVICE_ID_EICON_DIVA201    0xe005
+#define PCI_DEVICE_ID_EICON_DIVA202    0xe00b
+#define PCI_DEVICE_ID_EICON_MAESTRA    0xe010
+#define PCI_DEVICE_ID_EICON_MAESTRAQ   0xe012
+#define PCI_DEVICE_ID_EICON_MAESTRAQ_U 0xe013
+#define PCI_DEVICE_ID_EICON_MAESTRAP   0xe014
+#define PCI_VENDOR_ID_CYCLONE          0x113c
+#define PCI_DEVICE_ID_CYCLONE_SDK      0x0001
+
+#define PCI_VENDOR_ID_ALLIANCE         0x1142
+#define PCI_DEVICE_ID_ALLIANCE_PROMOTIO        0x3210
+#define PCI_DEVICE_ID_ALLIANCE_PROVIDEO        0x6422
+#define PCI_DEVICE_ID_ALLIANCE_AT24    0x6424
+#define PCI_DEVICE_ID_ALLIANCE_AT3D    0x643d
+
+#define PCI_VENDOR_ID_SYSKONNECT       0x1148
+#define PCI_DEVICE_ID_SYSKONNECT_FP    0x4000
+#define PCI_DEVICE_ID_SYSKONNECT_TR    0x4200
+#define PCI_DEVICE_ID_SYSKONNECT_GE    0x4300
+#define PCI_DEVICE_ID_SYSKONNECT_YU    0x4320
+#define PCI_DEVICE_ID_SYSKONNECT_9DXX  0x4400
+#define PCI_DEVICE_ID_SYSKONNECT_9MXX  0x4500
+
+#define PCI_VENDOR_ID_VMIC             0x114a
+#define PCI_DEVICE_ID_VMIC_VME         0x7587
+
+#define PCI_VENDOR_ID_DIGI             0x114f
+#define PCI_DEVICE_ID_DIGI_EPC         0x0002
+#define PCI_DEVICE_ID_DIGI_RIGHTSWITCH 0x0003
+#define PCI_DEVICE_ID_DIGI_XEM         0x0004
+#define PCI_DEVICE_ID_DIGI_XR          0x0005
+#define PCI_DEVICE_ID_DIGI_CX          0x0006
+#define PCI_DEVICE_ID_DIGI_XRJ         0x0009
+#define PCI_DEVICE_ID_DIGI_EPCJ                0x000a
+#define PCI_DEVICE_ID_DIGI_XR_920      0x0027
+#define PCI_DEVICE_ID_DIGI_DF_M_IOM2_E 0x0070
+#define PCI_DEVICE_ID_DIGI_DF_M_E      0x0071
+#define PCI_DEVICE_ID_DIGI_DF_M_IOM2_A 0x0072
+#define PCI_DEVICE_ID_DIGI_DF_M_A      0x0073
+
+#define PCI_VENDOR_ID_MUTECH           0x1159
+#define PCI_DEVICE_ID_MUTECH_MV1000    0x0001
+
+#define PCI_VENDOR_ID_XIRCOM           0x115d
+#define PCI_DEVICE_ID_XIRCOM_X3201_ETH 0x0003
+#define PCI_DEVICE_ID_XIRCOM_X3201_MDM 0x0103
+
+#define PCI_VENDOR_ID_RENDITION                0x1163
+#define PCI_DEVICE_ID_RENDITION_VERITE 0x0001
+#define PCI_DEVICE_ID_RENDITION_VERITE2100 0x2000
+
+#define PCI_VENDOR_ID_SERVERWORKS        0x1166
+#define PCI_DEVICE_ID_SERVERWORKS_HE     0x0008
+#define PCI_DEVICE_ID_SERVERWORKS_LE     0x0009
+#define PCI_DEVICE_ID_SERVERWORKS_CIOB30  0x0010
+#define PCI_DEVICE_ID_SERVERWORKS_CMIC_HE 0x0011
+#define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017
+#define PCI_DEVICE_ID_SERVERWORKS_OSB4   0x0200
+#define PCI_DEVICE_ID_SERVERWORKS_CSB5   0x0201
+#define PCI_DEVICE_ID_SERVERWORKS_CSB6    0x0203
+#define PCI_DEVICE_ID_SERVERWORKS_OSB4IDE 0x0211
+#define PCI_DEVICE_ID_SERVERWORKS_CSB5IDE 0x0212
+#define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE 0x0213
+#define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 0x0217
+#define PCI_DEVICE_ID_SERVERWORKS_OSB4USB 0x0220
+#define PCI_DEVICE_ID_SERVERWORKS_CSB5USB PCI_DEVICE_ID_SERVERWORKS_OSB4USB
+#define PCI_DEVICE_ID_SERVERWORKS_CSB6USB 0x0221
+#define PCI_DEVICE_ID_SERVERWORKS_GCLE    0x0225
+#define PCI_DEVICE_ID_SERVERWORKS_GCLE2   0x0227
+#define PCI_DEVICE_ID_SERVERWORKS_CSB5ISA 0x0230
+
+#define PCI_VENDOR_ID_SBE              0x1176
+#define PCI_DEVICE_ID_SBE_WANXL100     0x0301
+#define PCI_DEVICE_ID_SBE_WANXL200     0x0302
+#define PCI_DEVICE_ID_SBE_WANXL400     0x0104
+
+#define PCI_VENDOR_ID_TOSHIBA          0x1179
+#define PCI_DEVICE_ID_TOSHIBA_PICCOLO  0x0102
+#define PCI_DEVICE_ID_TOSHIBA_601      0x0601
+#define PCI_DEVICE_ID_TOSHIBA_TOPIC95  0x060a
+#define PCI_DEVICE_ID_TOSHIBA_TOPIC97  0x060f
+
+#define PCI_VENDOR_ID_TOSHIBA_2                0x102f
+#define PCI_DEVICE_ID_TOSHIBA_TX3927   0x000a
+#define PCI_DEVICE_ID_TOSHIBA_TC35815CF        0x0030
+#define PCI_DEVICE_ID_TOSHIBA_TX4927   0x0180
+
+#define PCI_VENDOR_ID_RICOH            0x1180
+#define PCI_DEVICE_ID_RICOH_RL5C465    0x0465
+#define PCI_DEVICE_ID_RICOH_RL5C466    0x0466
+#define PCI_DEVICE_ID_RICOH_RL5C475    0x0475
+#define PCI_DEVICE_ID_RICOH_RL5C476    0x0476
+#define PCI_DEVICE_ID_RICOH_RL5C478    0x0478
+
+#define PCI_VENDOR_ID_ARTOP            0x1191
+#define PCI_DEVICE_ID_ARTOP_ATP8400    0x0004
+#define PCI_DEVICE_ID_ARTOP_ATP850UF   0x0005
+#define PCI_DEVICE_ID_ARTOP_ATP860     0x0006
+#define PCI_DEVICE_ID_ARTOP_ATP860R    0x0007
+#define PCI_DEVICE_ID_ARTOP_ATP865     0x0008
+#define PCI_DEVICE_ID_ARTOP_ATP865R    0x0009
+#define PCI_DEVICE_ID_ARTOP_AEC7610    0x8002
+#define PCI_DEVICE_ID_ARTOP_AEC7612UW  0x8010
+#define PCI_DEVICE_ID_ARTOP_AEC7612U   0x8020
+#define PCI_DEVICE_ID_ARTOP_AEC7612S   0x8030
+#define PCI_DEVICE_ID_ARTOP_AEC7612D   0x8040
+#define PCI_DEVICE_ID_ARTOP_AEC7612SUW 0x8050
+#define PCI_DEVICE_ID_ARTOP_8060       0x8060
+
+#define PCI_VENDOR_ID_ZEITNET          0x1193
+#define PCI_DEVICE_ID_ZEITNET_1221     0x0001
+#define PCI_DEVICE_ID_ZEITNET_1225     0x0002
+
+#define PCI_VENDOR_ID_OMEGA            0x119b
+#define PCI_DEVICE_ID_OMEGA_82C092G    0x1221
+
+#define PCI_VENDOR_ID_FUJITSU_ME       0x119e
+#define PCI_DEVICE_ID_FUJITSU_FS155    0x0001
+#define PCI_DEVICE_ID_FUJITSU_FS50     0x0003
+
+#define PCI_SUBVENDOR_ID_KEYSPAN       0x11a9
+#define PCI_SUBDEVICE_ID_KEYSPAN_SX2   0x5334
+
+#define PCI_VENDOR_ID_GALILEO          0x11ab
+#define PCI_DEVICE_ID_GALILEO_GT64011  0x4146
+#define PCI_DEVICE_ID_GALILEO_GT64111  0x4146
+#define PCI_DEVICE_ID_GALILEO_GT96100  0x9652
+#define PCI_DEVICE_ID_GALILEO_GT96100A 0x9653
+
+#define PCI_VENDOR_ID_LITEON           0x11ad
+#define PCI_DEVICE_ID_LITEON_LNE100TX  0x0002
+
+#define PCI_VENDOR_ID_V3               0x11b0
+#define PCI_DEVICE_ID_V3_V960          0x0001
+#define PCI_DEVICE_ID_V3_V350          0x0001
+#define PCI_DEVICE_ID_V3_V961          0x0002
+#define PCI_DEVICE_ID_V3_V351          0x0002
+
+#define PCI_VENDOR_ID_NP               0x11bc
+#define PCI_DEVICE_ID_NP_PCI_FDDI      0x0001
+
+#define PCI_VENDOR_ID_ATT              0x11c1
+#define PCI_DEVICE_ID_ATT_L56XMF       0x0440
+#define PCI_DEVICE_ID_ATT_VENUS_MODEM  0x480
+
+#define PCI_VENDOR_ID_SPECIALIX                0x11cb
+#define PCI_DEVICE_ID_SPECIALIX_IO8    0x2000
+#define PCI_DEVICE_ID_SPECIALIX_XIO    0x4000
+#define PCI_DEVICE_ID_SPECIALIX_RIO    0x8000
+#define PCI_SUBDEVICE_ID_SPECIALIX_SPEED4 0xa004
+
+#define PCI_VENDOR_ID_AURAVISION       0x11d1
+#define PCI_DEVICE_ID_AURAVISION_VXP524        0x01f7
+
+#define PCI_VENDOR_ID_ANALOG_DEVICES   0x11d4
+#define PCI_DEVICE_ID_AD1889JS         0x1889
+
+#define PCI_VENDOR_ID_IKON             0x11d5
+#define PCI_DEVICE_ID_IKON_10115       0x0115
+#define PCI_DEVICE_ID_IKON_10117       0x0117
+
+#define PCI_VENDOR_ID_ZORAN            0x11de
+#define PCI_DEVICE_ID_ZORAN_36057      0x6057
+#define PCI_DEVICE_ID_ZORAN_36120      0x6120
+
+#define PCI_VENDOR_ID_KINETIC          0x11f4
+#define PCI_DEVICE_ID_KINETIC_2915     0x2915
+
+#define PCI_VENDOR_ID_COMPEX           0x11f6
+#define PCI_DEVICE_ID_COMPEX_ENET100VG4        0x0112
+#define PCI_DEVICE_ID_COMPEX_RL2000    0x1401
+
+#define PCI_VENDOR_ID_RP               0x11fe
+#define PCI_DEVICE_ID_RP32INTF         0x0001
+#define PCI_DEVICE_ID_RP8INTF          0x0002
+#define PCI_DEVICE_ID_RP16INTF         0x0003
+#define PCI_DEVICE_ID_RP4QUAD          0x0004
+#define PCI_DEVICE_ID_RP8OCTA          0x0005
+#define PCI_DEVICE_ID_RP8J             0x0006
+#define PCI_DEVICE_ID_RPP4             0x000A
+#define PCI_DEVICE_ID_RPP8             0x000B
+#define PCI_DEVICE_ID_RP8M             0x000C
+
+#define PCI_VENDOR_ID_CYCLADES         0x120e
+#define PCI_DEVICE_ID_CYCLOM_Y_Lo      0x0100
+#define PCI_DEVICE_ID_CYCLOM_Y_Hi      0x0101
+#define PCI_DEVICE_ID_CYCLOM_4Y_Lo     0x0102
+#define PCI_DEVICE_ID_CYCLOM_4Y_Hi     0x0103
+#define PCI_DEVICE_ID_CYCLOM_8Y_Lo     0x0104
+#define PCI_DEVICE_ID_CYCLOM_8Y_Hi     0x0105
+#define PCI_DEVICE_ID_CYCLOM_Z_Lo      0x0200
+#define PCI_DEVICE_ID_CYCLOM_Z_Hi      0x0201
+#define PCI_DEVICE_ID_PC300_RX_2       0x0300
+#define PCI_DEVICE_ID_PC300_RX_1       0x0301
+#define PCI_DEVICE_ID_PC300_TE_2       0x0310
+#define PCI_DEVICE_ID_PC300_TE_1       0x0311
+
+#define PCI_VENDOR_ID_ESSENTIAL                0x120f
+#define PCI_DEVICE_ID_ESSENTIAL_ROADRUNNER     0x0001
+
+#define PCI_VENDOR_ID_O2               0x1217
+#define PCI_DEVICE_ID_O2_6729          0x6729
+#define PCI_DEVICE_ID_O2_6730          0x673a
+#define PCI_DEVICE_ID_O2_6832          0x6832
+#define PCI_DEVICE_ID_O2_6836          0x6836
+
+#define PCI_VENDOR_ID_3DFX             0x121a
+#define PCI_DEVICE_ID_3DFX_VOODOO      0x0001
+#define PCI_DEVICE_ID_3DFX_VOODOO2     0x0002
+#define PCI_DEVICE_ID_3DFX_BANSHEE     0x0003
+#define PCI_DEVICE_ID_3DFX_VOODOO3     0x0005
+
+#define PCI_VENDOR_ID_SIGMADES         0x1236
+#define PCI_DEVICE_ID_SIGMADES_6425    0x6401
+
+#define PCI_VENDOR_ID_CCUBE            0x123f
+
+#define PCI_VENDOR_ID_AVM              0x1244
+#define PCI_DEVICE_ID_AVM_B1           0x0700
+#define PCI_DEVICE_ID_AVM_C4           0x0800
+#define PCI_DEVICE_ID_AVM_A1           0x0a00
+#define PCI_DEVICE_ID_AVM_A1_V2                0x0e00
+#define PCI_DEVICE_ID_AVM_C2           0x1100
+#define PCI_DEVICE_ID_AVM_T1           0x1200
+
+#define PCI_VENDOR_ID_DIPIX            0x1246
+
+#define PCI_VENDOR_ID_STALLION         0x124d
+#define PCI_DEVICE_ID_STALLION_ECHPCI832 0x0000
+#define PCI_DEVICE_ID_STALLION_ECHPCI864 0x0002
+#define PCI_DEVICE_ID_STALLION_EIOPCI  0x0003
+
+#define PCI_VENDOR_ID_OPTIBASE         0x1255
+#define PCI_DEVICE_ID_OPTIBASE_FORGE   0x1110
+#define PCI_DEVICE_ID_OPTIBASE_FUSION  0x1210
+#define PCI_DEVICE_ID_OPTIBASE_VPLEX   0x2110
+#define PCI_DEVICE_ID_OPTIBASE_VPLEXCC 0x2120
+#define PCI_DEVICE_ID_OPTIBASE_VQUEST  0x2130
+
+#define PCI_VENDOR_ID_ESS              0x125d
+#define PCI_DEVICE_ID_ESS_ESS1968      0x1968
+#define PCI_DEVICE_ID_ESS_AUDIOPCI     0x1969
+#define PCI_DEVICE_ID_ESS_ESS1978      0x1978
+
+#define PCI_VENDOR_ID_SATSAGEM         0x1267
+#define PCI_DEVICE_ID_SATSAGEM_NICCY   0x1016
+#define PCI_DEVICE_ID_SATSAGEM_PCR2101 0x5352
+#define PCI_DEVICE_ID_SATSAGEM_TELSATTURBO 0x5a4b
+
+#define PCI_VENDOR_ID_HUGHES           0x1273
+#define PCI_DEVICE_ID_HUGHES_DIRECPC   0x0002
+
+#define PCI_VENDOR_ID_ENSONIQ          0x1274
+#define PCI_DEVICE_ID_ENSONIQ_CT5880   0x5880
+#define PCI_DEVICE_ID_ENSONIQ_ES1370   0x5000
+#define PCI_DEVICE_ID_ENSONIQ_ES1371   0x1371
+
+#define PCI_VENDOR_ID_ROCKWELL         0x127A
+
+#define PCI_VENDOR_ID_ITE              0x1283
+#define PCI_DEVICE_ID_ITE_IT8172G      0x8172
+#define PCI_DEVICE_ID_ITE_IT8172G_AUDIO 0x0801
+#define PCI_DEVICE_ID_ITE_8872         0x8872
+
+#define PCI_DEVICE_ID_ITE_IT8330G_0    0xe886
+
+/* formerly Platform Tech */
+#define PCI_VENDOR_ID_ESS_OLD          0x1285
+#define PCI_DEVICE_ID_ESS_ESS0100      0x0100
+
+#define PCI_VENDOR_ID_ALTEON           0x12ae
+#define PCI_DEVICE_ID_ALTEON_ACENIC    0x0001
+
+#define PCI_VENDOR_ID_USR              0x12B9
+
+#define PCI_SUBVENDOR_ID_CONNECT_TECH                  0x12c4
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232          0x0001
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_232          0x0002
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_232          0x0003
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485          0x0004
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485_4_4      0x0005
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_485          0x0006
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_485_2_2      0x0007
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_485          0x0008
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485_2_6      0x0009
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH081101V1       0x000A
+#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH041101V1       0x000B
+
+#define PCI_VENDOR_ID_PICTUREL         0x12c5
+#define PCI_DEVICE_ID_PICTUREL_PCIVST  0x0081
+
+#define PCI_VENDOR_ID_NVIDIA_SGS       0x12d2
+#define PCI_DEVICE_ID_NVIDIA_SGS_RIVA128 0x0018
+
+#define PCI_SUBVENDOR_ID_CHASE_PCIFAST         0x12E0
+#define PCI_SUBDEVICE_ID_CHASE_PCIFAST4                0x0031
+#define PCI_SUBDEVICE_ID_CHASE_PCIFAST8                0x0021
+#define PCI_SUBDEVICE_ID_CHASE_PCIFAST16       0x0011
+#define PCI_SUBDEVICE_ID_CHASE_PCIFAST16FMC    0x0041
+#define PCI_SUBVENDOR_ID_CHASE_PCIRAS          0x124D
+#define PCI_SUBDEVICE_ID_CHASE_PCIRAS4         0xF001
+#define PCI_SUBDEVICE_ID_CHASE_PCIRAS8         0xF010
+
+#define PCI_VENDOR_ID_AUREAL           0x12eb
+#define PCI_DEVICE_ID_AUREAL_VORTEX_1  0x0001
+#define PCI_DEVICE_ID_AUREAL_VORTEX_2  0x0002
+
+#define PCI_VENDOR_ID_CBOARDS          0x1307
+#define PCI_DEVICE_ID_CBOARDS_DAS1602_16 0x0001
+
+#define PCI_VENDOR_ID_SIIG             0x131f
+#define PCI_DEVICE_ID_SIIG_1S_10x_550  0x1000
+#define PCI_DEVICE_ID_SIIG_1S_10x_650  0x1001
+#define PCI_DEVICE_ID_SIIG_1S_10x_850  0x1002
+#define PCI_DEVICE_ID_SIIG_1S1P_10x_550        0x1010
+#define PCI_DEVICE_ID_SIIG_1S1P_10x_650        0x1011
+#define PCI_DEVICE_ID_SIIG_1S1P_10x_850        0x1012
+#define PCI_DEVICE_ID_SIIG_1P_10x      0x1020
+#define PCI_DEVICE_ID_SIIG_2P_10x      0x1021
+#define PCI_DEVICE_ID_SIIG_2S_10x_550  0x1030
+#define PCI_DEVICE_ID_SIIG_2S_10x_650  0x1031
+#define PCI_DEVICE_ID_SIIG_2S_10x_850  0x1032
+#define PCI_DEVICE_ID_SIIG_2S1P_10x_550        0x1034
+#define PCI_DEVICE_ID_SIIG_2S1P_10x_650        0x1035
+#define PCI_DEVICE_ID_SIIG_2S1P_10x_850        0x1036
+#define PCI_DEVICE_ID_SIIG_4S_10x_550  0x1050
+#define PCI_DEVICE_ID_SIIG_4S_10x_650  0x1051
+#define PCI_DEVICE_ID_SIIG_4S_10x_850  0x1052
+#define PCI_DEVICE_ID_SIIG_1S_20x_550  0x2000
+#define PCI_DEVICE_ID_SIIG_1S_20x_650  0x2001
+#define PCI_DEVICE_ID_SIIG_1S_20x_850  0x2002
+#define PCI_DEVICE_ID_SIIG_1P_20x      0x2020
+#define PCI_DEVICE_ID_SIIG_2P_20x      0x2021
+#define PCI_DEVICE_ID_SIIG_2S_20x_550  0x2030
+#define PCI_DEVICE_ID_SIIG_2S_20x_650  0x2031
+#define PCI_DEVICE_ID_SIIG_2S_20x_850  0x2032
+#define PCI_DEVICE_ID_SIIG_2P1S_20x_550        0x2040
+#define PCI_DEVICE_ID_SIIG_2P1S_20x_650        0x2041
+#define PCI_DEVICE_ID_SIIG_2P1S_20x_850        0x2042
+#define PCI_DEVICE_ID_SIIG_1S1P_20x_550        0x2010
+#define PCI_DEVICE_ID_SIIG_1S1P_20x_650        0x2011
+#define PCI_DEVICE_ID_SIIG_1S1P_20x_850        0x2012
+#define PCI_DEVICE_ID_SIIG_4S_20x_550  0x2050
+#define PCI_DEVICE_ID_SIIG_4S_20x_650  0x2051
+#define PCI_DEVICE_ID_SIIG_4S_20x_850  0x2052
+#define PCI_DEVICE_ID_SIIG_2S1P_20x_550        0x2060
+#define PCI_DEVICE_ID_SIIG_2S1P_20x_650        0x2061
+#define PCI_DEVICE_ID_SIIG_2S1P_20x_850        0x2062
+
+#define PCI_VENDOR_ID_DOMEX            0x134a
+#define PCI_DEVICE_ID_DOMEX_DMX3191D   0x0001
+
+#define PCI_VENDOR_ID_QUATECH          0x135C
+#define PCI_DEVICE_ID_QUATECH_QSC100   0x0010
+#define PCI_DEVICE_ID_QUATECH_DSC100   0x0020
+#define PCI_DEVICE_ID_QUATECH_DSC200   0x0030
+#define PCI_DEVICE_ID_QUATECH_QSC200   0x0040
+#define PCI_DEVICE_ID_QUATECH_ESC100D  0x0050
+#define PCI_DEVICE_ID_QUATECH_ESC100M  0x0060
+
+#define PCI_VENDOR_ID_SEALEVEL         0x135e
+#define PCI_DEVICE_ID_SEALEVEL_U530    0x7101
+#define PCI_DEVICE_ID_SEALEVEL_UCOMM2  0x7201
+#define PCI_DEVICE_ID_SEALEVEL_UCOMM422        0x7402
+#define PCI_DEVICE_ID_SEALEVEL_UCOMM232        0x7202
+#define PCI_DEVICE_ID_SEALEVEL_COMM4   0x7401
+#define PCI_DEVICE_ID_SEALEVEL_COMM8   0x7801
+
+#define PCI_VENDOR_ID_HYPERCOPE                0x1365
+#define PCI_DEVICE_ID_HYPERCOPE_PLX    0x9050
+#define PCI_SUBDEVICE_ID_HYPERCOPE_OLD_ERGO    0x0104
+#define PCI_SUBDEVICE_ID_HYPERCOPE_ERGO                0x0106
+#define PCI_SUBDEVICE_ID_HYPERCOPE_METRO       0x0107
+#define PCI_SUBDEVICE_ID_HYPERCOPE_CHAMP2      0x0108
+#define PCI_SUBDEVICE_ID_HYPERCOPE_PLEXUS      0x0109
+
+#define PCI_VENDOR_ID_KAWASAKI         0x136b
+#define PCI_DEVICE_ID_MCHIP_KL5A72002  0xff01
+
+#define PCI_VENDOR_ID_LMC              0x1376
+#define PCI_DEVICE_ID_LMC_HSSI         0x0003
+#define PCI_DEVICE_ID_LMC_DS3          0x0004
+#define PCI_DEVICE_ID_LMC_SSI          0x0005
+#define PCI_DEVICE_ID_LMC_T1           0x0006
+
+#define PCI_VENDOR_ID_NETGEAR          0x1385
+#define PCI_DEVICE_ID_NETGEAR_GA620    0x620a
+#define PCI_DEVICE_ID_NETGEAR_GA622    0x622a
+
+#define PCI_VENDOR_ID_APPLICOM         0x1389
+#define PCI_DEVICE_ID_APPLICOM_PCIGENERIC 0x0001
+#define PCI_DEVICE_ID_APPLICOM_PCI2000IBS_CAN 0x0002
+#define PCI_DEVICE_ID_APPLICOM_PCI2000PFB 0x0003
+
+#define PCI_VENDOR_ID_MOXA             0x1393
+#define PCI_DEVICE_ID_MOXA_C104                0x1040
+#define PCI_DEVICE_ID_MOXA_C168                0x1680
+#define PCI_DEVICE_ID_MOXA_CP204J      0x2040
+#define PCI_DEVICE_ID_MOXA_C218                0x2180
+#define PCI_DEVICE_ID_MOXA_C320                0x3200
+
+#define PCI_VENDOR_ID_CCD              0x1397
+#define PCI_DEVICE_ID_CCD_2BD0         0x2bd0
+#define PCI_DEVICE_ID_CCD_B000         0xb000
+#define PCI_DEVICE_ID_CCD_B006         0xb006
+#define PCI_DEVICE_ID_CCD_B007         0xb007
+#define PCI_DEVICE_ID_CCD_B008         0xb008
+#define PCI_DEVICE_ID_CCD_B009         0xb009
+#define PCI_DEVICE_ID_CCD_B00A         0xb00a
+#define PCI_DEVICE_ID_CCD_B00B         0xb00b
+#define PCI_DEVICE_ID_CCD_B00C         0xb00c
+#define PCI_DEVICE_ID_CCD_B100         0xb100
+
+#define PCI_VENDOR_ID_3WARE            0x13C1
+#define PCI_DEVICE_ID_3WARE_1000       0x1000
+
+#define PCI_VENDOR_ID_ABOCOM           0x13D1
+#define PCI_DEVICE_ID_ABOCOM_2BD1       0x2BD1
+
+#define PCI_VENDOR_ID_CMEDIA           0x13f6
+#define PCI_DEVICE_ID_CMEDIA_CM8338A   0x0100
+#define PCI_DEVICE_ID_CMEDIA_CM8338B   0x0101
+#define PCI_DEVICE_ID_CMEDIA_CM8738    0x0111
+#define PCI_DEVICE_ID_CMEDIA_CM8738B   0x0112
+
+#define PCI_VENDOR_ID_LAVA             0x1407
+#define PCI_DEVICE_ID_LAVA_DSERIAL     0x0100 /* 2x 16550 */
+#define PCI_DEVICE_ID_LAVA_QUATRO_A    0x0101 /* 2x 16550, half of 4 port */
+#define PCI_DEVICE_ID_LAVA_QUATRO_B    0x0102 /* 2x 16550, half of 4 port */
+#define PCI_DEVICE_ID_LAVA_OCTO_A      0x0180 /* 4x 16550A, half of 8 port */
+#define PCI_DEVICE_ID_LAVA_OCTO_B      0x0181 /* 4x 16550A, half of 8 port */
+#define PCI_DEVICE_ID_LAVA_PORT_PLUS   0x0200 /* 2x 16650 */
+#define PCI_DEVICE_ID_LAVA_QUAD_A      0x0201 /* 2x 16650, half of 4 port */
+#define PCI_DEVICE_ID_LAVA_QUAD_B      0x0202 /* 2x 16650, half of 4 port */
+#define PCI_DEVICE_ID_LAVA_SSERIAL     0x0500 /* 1x 16550 */
+#define PCI_DEVICE_ID_LAVA_PORT_650    0x0600 /* 1x 16650 */
+#define PCI_DEVICE_ID_LAVA_PARALLEL    0x8000
+#define PCI_DEVICE_ID_LAVA_DUAL_PAR_A  0x8002 /* The Lava Dual Parallel is */
+#define PCI_DEVICE_ID_LAVA_DUAL_PAR_B  0x8003 /* two PCI devices on a card */
+#define PCI_DEVICE_ID_LAVA_BOCA_IOPPAR 0x8800
+
+#define PCI_VENDOR_ID_TIMEDIA          0x1409
+#define PCI_DEVICE_ID_TIMEDIA_1889     0x7168
+
+#define PCI_VENDOR_ID_OXSEMI           0x1415
+#define PCI_DEVICE_ID_OXSEMI_12PCI840  0x8403
+#define PCI_DEVICE_ID_OXSEMI_16PCI954  0x9501
+#define PCI_DEVICE_ID_OXSEMI_16PCI95N  0x9511
+#define PCI_DEVICE_ID_OXSEMI_16PCI954PP        0x9513
+#define PCI_DEVICE_ID_OXSEMI_16PCI952  0x9521
+
+#define PCI_VENDOR_ID_AIRONET          0x14b9
+#define PCI_DEVICE_ID_AIRONET_4800_1   0x0001
+#define PCI_DEVICE_ID_AIRONET_4800     0x4500 // values switched?  see
+#define PCI_DEVICE_ID_AIRONET_4500     0x4800 // drivers/net/aironet4500_card.c
+
+#define PCI_VENDOR_ID_TITAN            0x14D2
+#define PCI_DEVICE_ID_TITAN_010L       0x8001
+#define PCI_DEVICE_ID_TITAN_100L       0x8010
+#define PCI_DEVICE_ID_TITAN_110L       0x8011
+#define PCI_DEVICE_ID_TITAN_200L       0x8020
+#define PCI_DEVICE_ID_TITAN_210L       0x8021
+#define PCI_DEVICE_ID_TITAN_400L       0x8040
+#define PCI_DEVICE_ID_TITAN_800L       0x8080
+#define PCI_DEVICE_ID_TITAN_100                0xA001
+#define PCI_DEVICE_ID_TITAN_200                0xA005
+#define PCI_DEVICE_ID_TITAN_400                0xA003
+#define PCI_DEVICE_ID_TITAN_800B       0xA004
+
+#define PCI_VENDOR_ID_PANACOM          0x14d4
+#define PCI_DEVICE_ID_PANACOM_QUADMODEM        0x0400
+#define PCI_DEVICE_ID_PANACOM_DUALMODEM        0x0402
+
+#define PCI_VENDOR_ID_AFAVLAB          0x14db
+#define PCI_DEVICE_ID_AFAVLAB_P028     0x2180
+
+#define PCI_VENDOR_ID_BROADCOM         0x14e4
+#define PCI_DEVICE_ID_TIGON3_5700      0x1644
+#define PCI_DEVICE_ID_TIGON3_5701      0x1645
+#define PCI_DEVICE_ID_TIGON3_5702      0x1646
+#define PCI_DEVICE_ID_TIGON3_5703      0x1647
+#define PCI_DEVICE_ID_TIGON3_5704      0x1648
+#define PCI_DEVICE_ID_TIGON3_5702FE    0x164d
+#define PCI_DEVICE_ID_TIGON3_5705      0x1653
+#define PCI_DEVICE_ID_TIGON3_5705_2    0x1654
+#define PCI_DEVICE_ID_TIGON3_5705M     0x165d
+#define PCI_DEVICE_ID_TIGON3_5705M_2   0x165e
+#define PCI_DEVICE_ID_TIGON3_5782      0x1696
+#define PCI_DEVICE_ID_TIGON3_5788      0x169c
+#define PCI_DEVICE_ID_TIGON3_5702X     0x16a6
+#define PCI_DEVICE_ID_TIGON3_5703X     0x16a7
+#define PCI_DEVICE_ID_TIGON3_5704S     0x16a8
+#define PCI_DEVICE_ID_TIGON3_5702A3    0x16c6
+#define PCI_DEVICE_ID_TIGON3_5703A3    0x16c7
+#define PCI_DEVICE_ID_TIGON3_5901      0x170d
+#define PCI_DEVICE_ID_TIGON3_5901_2    0x170e
+#define PCI_DEVICE_ID_BCM4401          0x4401
+
+#define PCI_VENDOR_ID_SYBA             0x1592
+#define PCI_DEVICE_ID_SYBA_2P_EPP      0x0782
+#define PCI_DEVICE_ID_SYBA_1P_ECP      0x0783
+
+#define PCI_VENDOR_ID_MORETON          0x15aa
+#define PCI_DEVICE_ID_RASTEL_2PORT     0x2000
+
+#define PCI_VENDOR_ID_ZOLTRIX          0x15b0
+#define PCI_DEVICE_ID_ZOLTRIX_2BD0     0x2bd0 
+
+#define PCI_VENDOR_ID_PDC              0x15e9
+#define PCI_DEVICE_ID_PDC_ADMA100      0x1841
+
+#define PCI_VENDOR_ID_ALTIMA           0x173b
+#define PCI_DEVICE_ID_ALTIMA_AC1000    0x03e8
+#define PCI_DEVICE_ID_ALTIMA_AC1001    0x03e9
+#define PCI_DEVICE_ID_ALTIMA_AC9100    0x03ea
+#define PCI_DEVICE_ID_ALTIMA_AC1003    0x03eb
+
+#define PCI_VENDOR_ID_SYMPHONY         0x1c1c
+#define PCI_DEVICE_ID_SYMPHONY_101     0x0001
+
+#define PCI_VENDOR_ID_TEKRAM           0x1de1
+#define PCI_DEVICE_ID_TEKRAM_DC290     0xdc29
+
+#define PCI_VENDOR_ID_HINT             0x3388
+#define PCI_DEVICE_ID_HINT_VXPROII_IDE 0x8013
+
+#define PCI_VENDOR_ID_3DLABS           0x3d3d
+#define PCI_DEVICE_ID_3DLABS_300SX     0x0001
+#define PCI_DEVICE_ID_3DLABS_500TX     0x0002
+#define PCI_DEVICE_ID_3DLABS_DELTA     0x0003
+#define PCI_DEVICE_ID_3DLABS_PERMEDIA  0x0004
+#define PCI_DEVICE_ID_3DLABS_MX                0x0006
+#define PCI_DEVICE_ID_3DLABS_PERMEDIA2 0x0007
+#define PCI_DEVICE_ID_3DLABS_GAMMA     0x0008
+#define PCI_DEVICE_ID_3DLABS_PERMEDIA2V        0x0009
+
+#define PCI_VENDOR_ID_AVANCE           0x4005
+#define PCI_DEVICE_ID_AVANCE_ALG2064   0x2064
+#define PCI_DEVICE_ID_AVANCE_2302      0x2302
+
+#define PCI_VENDOR_ID_AKS              0x416c
+#define PCI_DEVICE_ID_AKS_ALADDINCARD  0x0100
+#define PCI_DEVICE_ID_AKS_CPC          0x0200
+
+#define PCI_VENDOR_ID_REDCREEK         0x4916
+#define PCI_DEVICE_ID_RC45             0x1960
+
+#define PCI_VENDOR_ID_NETVIN           0x4a14
+#define PCI_DEVICE_ID_NETVIN_NV5000SC  0x5000
+
+#define PCI_VENDOR_ID_S3               0x5333
+#define PCI_DEVICE_ID_S3_PLATO_PXS     0x0551
+#define PCI_DEVICE_ID_S3_ViRGE         0x5631
+#define PCI_DEVICE_ID_S3_TRIO          0x8811
+#define PCI_DEVICE_ID_S3_AURORA64VP    0x8812
+#define PCI_DEVICE_ID_S3_TRIO64UVP     0x8814
+#define PCI_DEVICE_ID_S3_ViRGE_VX      0x883d
+#define PCI_DEVICE_ID_S3_868           0x8880
+#define PCI_DEVICE_ID_S3_928           0x88b0
+#define PCI_DEVICE_ID_S3_864_1         0x88c0
+#define PCI_DEVICE_ID_S3_864_2         0x88c1
+#define PCI_DEVICE_ID_S3_964_1         0x88d0
+#define PCI_DEVICE_ID_S3_964_2         0x88d1
+#define PCI_DEVICE_ID_S3_968           0x88f0
+#define PCI_DEVICE_ID_S3_TRIO64V2      0x8901
+#define PCI_DEVICE_ID_S3_PLATO_PXG     0x8902
+#define PCI_DEVICE_ID_S3_ViRGE_DXGX    0x8a01
+#define PCI_DEVICE_ID_S3_ViRGE_GX2     0x8a10
+#define PCI_DEVICE_ID_S3_ViRGE_MX      0x8c01
+#define PCI_DEVICE_ID_S3_ViRGE_MXP     0x8c02
+#define PCI_DEVICE_ID_S3_ViRGE_MXPMV   0x8c03
+#define PCI_DEVICE_ID_S3_SONICVIBES    0xca00
+
+#define PCI_VENDOR_ID_DUNORD           0x5544
+#define PCI_DEVICE_ID_DUNORD_I3000     0x0001
+#define PCI_VENDOR_ID_GENROCO          0x5555
+#define PCI_DEVICE_ID_GENROCO_HFP832   0x0003
+
+#define PCI_VENDOR_ID_DCI              0x6666
+#define PCI_DEVICE_ID_DCI_PCCOM4       0x0001
+#define PCI_DEVICE_ID_DCI_PCCOM8       0x0002
+
+#define PCI_VENDOR_ID_INTEL            0x8086
+#define PCI_DEVICE_ID_INTEL_21145      0x0039
+#define PCI_DEVICE_ID_INTEL_82375      0x0482
+#define PCI_DEVICE_ID_INTEL_82424      0x0483
+#define PCI_DEVICE_ID_INTEL_82378      0x0484
+#define PCI_DEVICE_ID_INTEL_82430      0x0486
+#define PCI_DEVICE_ID_INTEL_82434      0x04a3
+#define PCI_DEVICE_ID_INTEL_I960       0x0960
+#define PCI_DEVICE_ID_INTEL_I960RM     0x0962
+#define PCI_DEVICE_ID_INTEL_82562ET    0x1031
+
+#define PCI_DEVICE_ID_INTEL_82815_MC   0x1130
+
+#define PCI_DEVICE_ID_INTEL_82559ER    0x1209
+#define PCI_DEVICE_ID_INTEL_82092AA_0  0x1221
+#define PCI_DEVICE_ID_INTEL_82092AA_1  0x1222
+#define PCI_DEVICE_ID_INTEL_7116       0x1223
+#define PCI_DEVICE_ID_INTEL_7205_0     0x255d
+#define PCI_DEVICE_ID_INTEL_82596      0x1226
+#define PCI_DEVICE_ID_INTEL_82865      0x1227
+#define PCI_DEVICE_ID_INTEL_82557      0x1229
+#define PCI_DEVICE_ID_INTEL_82437      0x122d
+#define PCI_DEVICE_ID_INTEL_82371FB_0  0x122e
+#define PCI_DEVICE_ID_INTEL_82371FB_1  0x1230
+#define PCI_DEVICE_ID_INTEL_82371MX    0x1234
+#define PCI_DEVICE_ID_INTEL_82437MX    0x1235
+#define PCI_DEVICE_ID_INTEL_82441      0x1237
+#define PCI_DEVICE_ID_INTEL_82380FB    0x124b
+#define PCI_DEVICE_ID_INTEL_82439      0x1250
+#define PCI_DEVICE_ID_INTEL_80960_RP   0x1960
+#define PCI_DEVICE_ID_INTEL_82845_HB   0x1a30
+#define PCI_DEVICE_ID_INTEL_82371SB_0  0x7000
+#define PCI_DEVICE_ID_INTEL_82371SB_1  0x7010
+#define PCI_DEVICE_ID_INTEL_82371SB_2  0x7020
+#define PCI_DEVICE_ID_INTEL_82437VX    0x7030
+#define PCI_DEVICE_ID_INTEL_82439TX    0x7100
+#define PCI_DEVICE_ID_INTEL_82371AB_0  0x7110
+#define PCI_DEVICE_ID_INTEL_82371AB    0x7111
+#define PCI_DEVICE_ID_INTEL_82371AB_2  0x7112
+#define PCI_DEVICE_ID_INTEL_82371AB_3  0x7113
+#define PCI_DEVICE_ID_INTEL_82801AA_0  0x2410
+#define PCI_DEVICE_ID_INTEL_82801AA_1  0x2411
+#define PCI_DEVICE_ID_INTEL_82801AA_2  0x2412
+#define PCI_DEVICE_ID_INTEL_82801AA_3  0x2413
+#define PCI_DEVICE_ID_INTEL_82801AA_5  0x2415
+#define PCI_DEVICE_ID_INTEL_82801AA_6  0x2416
+#define PCI_DEVICE_ID_INTEL_82801AA_8  0x2418
+#define PCI_DEVICE_ID_INTEL_82801AB_0  0x2420
+#define PCI_DEVICE_ID_INTEL_82801AB_1  0x2421
+#define PCI_DEVICE_ID_INTEL_82801AB_2  0x2422
+#define PCI_DEVICE_ID_INTEL_82801AB_3  0x2423
+#define PCI_DEVICE_ID_INTEL_82801AB_5  0x2425
+#define PCI_DEVICE_ID_INTEL_82801AB_6  0x2426
+#define PCI_DEVICE_ID_INTEL_82801AB_8  0x2428
+#define PCI_DEVICE_ID_INTEL_82801BA_0  0x2440
+#define PCI_DEVICE_ID_INTEL_82801BA_1  0x2442
+#define PCI_DEVICE_ID_INTEL_82801BA_2  0x2443
+#define PCI_DEVICE_ID_INTEL_82801BA_3  0x2444
+#define PCI_DEVICE_ID_INTEL_82801BA_4  0x2445
+#define PCI_DEVICE_ID_INTEL_82801BA_5  0x2446
+#define PCI_DEVICE_ID_INTEL_82801BA_6  0x2448
+#define PCI_DEVICE_ID_INTEL_82801BA_7  0x2449
+#define PCI_DEVICE_ID_INTEL_82801BA_8  0x244a
+#define PCI_DEVICE_ID_INTEL_82801BA_9  0x244b
+#define PCI_DEVICE_ID_INTEL_82801BA_10 0x244c
+#define PCI_DEVICE_ID_INTEL_82801BA_11 0x244e
+#define PCI_DEVICE_ID_INTEL_82801E_0   0x2450
+#define PCI_DEVICE_ID_INTEL_82801E_2   0x2452
+#define PCI_DEVICE_ID_INTEL_82801E_3   0x2453
+#define PCI_DEVICE_ID_INTEL_82801E_9   0x2459
+#define PCI_DEVICE_ID_INTEL_82801E_11  0x245B
+#define PCI_DEVICE_ID_INTEL_82801E_14  0x245D
+#define PCI_DEVICE_ID_INTEL_82801E_15  0x245E
+#define PCI_DEVICE_ID_INTEL_82801CA_0  0x2480
+#define PCI_DEVICE_ID_INTEL_82801CA_2  0x2482
+#define PCI_DEVICE_ID_INTEL_82801CA_3  0x2483
+#define PCI_DEVICE_ID_INTEL_82801CA_4  0x2484
+#define PCI_DEVICE_ID_INTEL_82801CA_5  0x2485
+#define PCI_DEVICE_ID_INTEL_82801CA_6  0x2486
+#define PCI_DEVICE_ID_INTEL_82801CA_7  0x2487
+#define PCI_DEVICE_ID_INTEL_82801CA_10 0x248a
+#define PCI_DEVICE_ID_INTEL_82801CA_11 0x248b
+#define PCI_DEVICE_ID_INTEL_82801CA_12 0x248c
+#define PCI_DEVICE_ID_INTEL_82801DB_0  0x24c0
+#define PCI_DEVICE_ID_INTEL_82801DB_2  0x24c2
+#define PCI_DEVICE_ID_INTEL_82801DB_3  0x24c3
+#define PCI_DEVICE_ID_INTEL_82801DB_4  0x24c4
+#define PCI_DEVICE_ID_INTEL_82801DB_5  0x24c5
+#define PCI_DEVICE_ID_INTEL_82801DB_6  0x24c6
+#define PCI_DEVICE_ID_INTEL_82801DB_7  0x24c7
+#define PCI_DEVICE_ID_INTEL_82801DB_10 0x24ca
+#define PCI_DEVICE_ID_INTEL_82801DB_11 0x24cb
+#define PCI_DEVICE_ID_INTEL_82801DB_12  0x24cc
+#define PCI_DEVICE_ID_INTEL_82801DB_13 0x24cd
+#define PCI_DEVICE_ID_INTEL_82801EB_0  0x24d0
+#define PCI_DEVICE_ID_INTEL_82801EB_1  0x24d1
+#define PCI_DEVICE_ID_INTEL_82801EB_2  0x24d2
+#define PCI_DEVICE_ID_INTEL_82801EB_3  0x24d3
+#define PCI_DEVICE_ID_INTEL_82801EB_4  0x24d4
+#define PCI_DEVICE_ID_INTEL_82801EB_5  0x24d5
+#define PCI_DEVICE_ID_INTEL_82801EB_6  0x24d6
+#define PCI_DEVICE_ID_INTEL_82801EB_7  0x24d7
+#define PCI_DEVICE_ID_INTEL_82801DB_10 0x24ca
+#define PCI_DEVICE_ID_INTEL_82801EB_11 0x24db
+#define PCI_DEVICE_ID_INTEL_82801EB_13 0x24dd
+#define PCI_DEVICE_ID_INTEL_ESB_0      0x25a0
+#define PCI_DEVICE_ID_INTEL_ESB_1      0x25a1
+#define PCI_DEVICE_ID_INTEL_ESB_2      0x25a2
+#define PCI_DEVICE_ID_INTEL_ESB_3      0x25a3
+#define PCI_DEVICE_ID_INTEL_ESB_31     0x25b0
+#define PCI_DEVICE_ID_INTEL_ESB_4      0x25a4
+#define PCI_DEVICE_ID_INTEL_ESB_5      0x25a6
+#define PCI_DEVICE_ID_INTEL_ESB_6      0x25a7
+#define PCI_DEVICE_ID_INTEL_ESB_7      0x25a9
+#define PCI_DEVICE_ID_INTEL_ESB_8      0x25aa
+#define PCI_DEVICE_ID_INTEL_ESB_9      0x25ab
+#define PCI_DEVICE_ID_INTEL_ESB_11     0x25ac
+#define PCI_DEVICE_ID_INTEL_ESB_12     0x25ad
+#define PCI_DEVICE_ID_INTEL_ESB_13     0x25ae
+#define PCI_DEVICE_ID_INTEL_82850_HB   0x2530
+#define PCI_DEVICE_ID_INTEL_82845G_HB  0x2560
+#define PCI_DEVICE_ID_INTEL_80310      0x530d
+#define PCI_DEVICE_ID_INTEL_82810_MC1  0x7120
+#define PCI_DEVICE_ID_INTEL_82810_IG1  0x7121
+#define PCI_DEVICE_ID_INTEL_82810_MC3  0x7122
+#define PCI_DEVICE_ID_INTEL_82810_IG3  0x7123
+#define PCI_DEVICE_ID_INTEL_82443LX_0  0x7180
+#define PCI_DEVICE_ID_INTEL_82443LX_1  0x7181
+#define PCI_DEVICE_ID_INTEL_82443BX_0  0x7190
+#define PCI_DEVICE_ID_INTEL_82443BX_1  0x7191
+#define PCI_DEVICE_ID_INTEL_82443BX_2  0x7192
+#define PCI_DEVICE_ID_INTEL_82443MX_0  0x7198
+#define PCI_DEVICE_ID_INTEL_82443MX_1  0x7199
+#define PCI_DEVICE_ID_INTEL_82443MX_2  0x719a
+#define PCI_DEVICE_ID_INTEL_82443MX_3  0x719b
+#define PCI_DEVICE_ID_INTEL_82443GX_0  0x71a0
+#define PCI_DEVICE_ID_INTEL_82443GX_1  0x71a1
+#define PCI_DEVICE_ID_INTEL_82443GX_2  0x71a2
+#define PCI_DEVICE_ID_INTEL_82372FB_0  0x7600
+#define PCI_DEVICE_ID_INTEL_82372FB_1  0x7601
+#define PCI_DEVICE_ID_INTEL_82372FB_2  0x7602
+#define PCI_DEVICE_ID_INTEL_82372FB_3  0x7603
+#define PCI_DEVICE_ID_INTEL_82454GX    0x84c4
+#define PCI_DEVICE_ID_INTEL_82450GX    0x84c5
+#define PCI_DEVICE_ID_INTEL_82451NX    0x84ca
+#define PCI_DEVICE_ID_INTEL_82454NX    0x84cb
+
+#define PCI_VENDOR_ID_COMPUTONE                0x8e0e
+#define PCI_DEVICE_ID_COMPUTONE_IP2EX  0x0291
+#define PCI_DEVICE_ID_COMPUTONE_PG     0x0302
+#define PCI_SUBVENDOR_ID_COMPUTONE     0x8e0e
+#define PCI_SUBDEVICE_ID_COMPUTONE_PG4 0x0001
+#define PCI_SUBDEVICE_ID_COMPUTONE_PG8 0x0002
+#define PCI_SUBDEVICE_ID_COMPUTONE_PG6 0x0003
+
+#define PCI_VENDOR_ID_KTI              0x8e2e
+#define PCI_DEVICE_ID_KTI_ET32P2       0x3000
+
+#define PCI_VENDOR_ID_ADAPTEC          0x9004
+#define PCI_DEVICE_ID_ADAPTEC_7810     0x1078
+#define PCI_DEVICE_ID_ADAPTEC_7821     0x2178
+#define PCI_DEVICE_ID_ADAPTEC_38602    0x3860
+#define PCI_DEVICE_ID_ADAPTEC_7850     0x5078
+#define PCI_DEVICE_ID_ADAPTEC_7855     0x5578
+#define PCI_DEVICE_ID_ADAPTEC_5800     0x5800
+#define PCI_DEVICE_ID_ADAPTEC_3860     0x6038
+#define PCI_DEVICE_ID_ADAPTEC_1480A    0x6075
+#define PCI_DEVICE_ID_ADAPTEC_7860     0x6078
+#define PCI_DEVICE_ID_ADAPTEC_7861     0x6178
+#define PCI_DEVICE_ID_ADAPTEC_7870     0x7078
+#define PCI_DEVICE_ID_ADAPTEC_7871     0x7178
+#define PCI_DEVICE_ID_ADAPTEC_7872     0x7278
+#define PCI_DEVICE_ID_ADAPTEC_7873     0x7378
+#define PCI_DEVICE_ID_ADAPTEC_7874     0x7478
+#define PCI_DEVICE_ID_ADAPTEC_7895     0x7895
+#define PCI_DEVICE_ID_ADAPTEC_7880     0x8078
+#define PCI_DEVICE_ID_ADAPTEC_7881     0x8178
+#define PCI_DEVICE_ID_ADAPTEC_7882     0x8278
+#define PCI_DEVICE_ID_ADAPTEC_7883     0x8378
+#define PCI_DEVICE_ID_ADAPTEC_7884     0x8478
+#define PCI_DEVICE_ID_ADAPTEC_7885     0x8578
+#define PCI_DEVICE_ID_ADAPTEC_7886     0x8678
+#define PCI_DEVICE_ID_ADAPTEC_7887     0x8778
+#define PCI_DEVICE_ID_ADAPTEC_7888     0x8878
+#define PCI_DEVICE_ID_ADAPTEC_1030     0x8b78
+
+#define PCI_VENDOR_ID_ADAPTEC2         0x9005
+#define PCI_DEVICE_ID_ADAPTEC2_2940U2  0x0010
+#define PCI_DEVICE_ID_ADAPTEC2_2930U2  0x0011
+#define PCI_DEVICE_ID_ADAPTEC2_7890B   0x0013
+#define PCI_DEVICE_ID_ADAPTEC2_7890    0x001f
+#define PCI_DEVICE_ID_ADAPTEC2_3940U2  0x0050
+#define PCI_DEVICE_ID_ADAPTEC2_3950U2D 0x0051
+#define PCI_DEVICE_ID_ADAPTEC2_7896    0x005f
+#define PCI_DEVICE_ID_ADAPTEC2_7892A   0x0080
+#define PCI_DEVICE_ID_ADAPTEC2_7892B   0x0081
+#define PCI_DEVICE_ID_ADAPTEC2_7892D   0x0083
+#define PCI_DEVICE_ID_ADAPTEC2_7892P   0x008f
+#define PCI_DEVICE_ID_ADAPTEC2_7899A   0x00c0
+#define PCI_DEVICE_ID_ADAPTEC2_7899B   0x00c1
+#define PCI_DEVICE_ID_ADAPTEC2_7899D   0x00c3
+#define PCI_DEVICE_ID_ADAPTEC2_7899P   0x00cf
+
+#define PCI_VENDOR_ID_ATRONICS         0x907f
+#define PCI_DEVICE_ID_ATRONICS_2015    0x2015
+
+#define PCI_VENDOR_ID_HOLTEK           0x9412
+#define PCI_DEVICE_ID_HOLTEK_6565      0x6565
+
+#define PCI_VENDOR_ID_NETMOS           0x9710
+#define PCI_DEVICE_ID_NETMOS_9735      0x9735
+#define PCI_DEVICE_ID_NETMOS_9835      0x9835
+
+#define PCI_SUBVENDOR_ID_EXSYS         0xd84d
+#define PCI_SUBDEVICE_ID_EXSYS_4014    0x4014
+
+#define PCI_VENDOR_ID_TIGERJET         0xe159
+#define PCI_DEVICE_ID_TIGERJET_300     0x0001
+#define PCI_DEVICE_ID_TIGERJET_100     0x0002
+
+#define PCI_VENDOR_ID_ARK              0xedd8
+#define PCI_DEVICE_ID_ARK_STING                0xa091
+#define PCI_DEVICE_ID_ARK_STINGARK     0xa099
+#define PCI_DEVICE_ID_ARK_2000MT       0xa0a1
+
+#define PCI_VENDOR_ID_MICROGATE                0x13c0
+#define PCI_DEVICE_ID_MICROGATE_USC    0x0010
+#define PCI_DEVICE_ID_MICROGATE_SCC    0x0020
+#define PCI_DEVICE_ID_MICROGATE_SCA    0x0030
diff --git a/xen/include/xen/perfc.h b/xen/include/xen/perfc.h
new file mode 100644 (file)
index 0000000..757c8bd
--- /dev/null
@@ -0,0 +1,56 @@
+
+#ifndef __XENO_PERFC_H__
+#define __XENO_PERFC_H__
+
+#include <asm/atomic.h>
+
+/* 
+ * NOTE: new counters must be defined in perfc_defn.h
+ * 
+ * PERFCOUNTER (counter, string)              define a new performance counter
+ * PERFCOUNTER_CPU (counter, string, size)    define a counter per CPU
+ * PERFCOUNTER_ARRY (counter, string, size)   define an array of counters
+ * 
+ * unsigned long perfc_value  (counter)        get value of a counter  
+ * unsigned long perfc_valuec (counter)        get value of a per CPU counter
+ * unsigned long perfc_valuea (counter, index) get value of an array counter
+ * unsigned long perfc_set  (counter, val)     set value of a counter  
+ * unsigned long perfc_setc (counter, val)     set value of a per CPU counter
+ * unsigned long perfc_seta (counter, index, val) set value of an array counter
+ * void perfc_incr  (counter)                  increment a counter          
+ * void perfc_incrc (counter, index)           increment a per CPU counter   
+ * void perfc_incra (counter, index)           increment an array counter   
+ * void perfc_add   (counter, value)           add a value to a counter     
+ * void perfc_addc  (counter, value)           add a value to a per CPU counter
+ * void perfc_adda  (counter, index, value)    add a value to array counter 
+ * void perfc_print (counter)                  print out the counter
+ */
+
+#define PERFCOUNTER( var, name ) \
+  atomic_t var[1];
+#define PERFCOUNTER_CPU( var, name ) \
+  atomic_t var[NR_CPUS];
+#define PERFCOUNTER_ARRAY( var, name, size ) \
+  atomic_t var[size];
+
+struct perfcounter_t 
+{
+#include <xen/perfc_defn.h>
+};
+
+extern struct perfcounter_t perfcounters;
+
+#define perfc_value(x)    atomic_read(&perfcounters.x[0])
+#define perfc_valuec(x)   atomic_read(&perfcounters.x[smp_processor_id()])
+#define perfc_valuea(x,y) atomic_read(&perfcounters.x[y])
+#define perfc_set(x,v)    atomic_set(&perfcounters.x[0], v)
+#define perfc_setc(x,v)   atomic_set(&perfcounters.x[smp_processor_id()], v)
+#define perfc_seta(x,y,v) atomic_set(&perfcounters.x[y], v)
+#define perfc_incr(x)     atomic_inc(&perfcounters.x[0])
+#define perfc_incrc(x)    atomic_inc(&perfcounters.x[smp_processor_id()])
+#define perfc_incra(x,y)  atomic_inc(&perfcounters.x[y])
+#define perfc_add(x,y)    atomic_add((y), &perfcounters.x[0])
+#define perfc_addc(x,y)   atomic_add((y), &perfcounters.x[smp_processor_id()])
+#define perfc_adda(x,y,z) atomic_add((z), &perfcounters.x[y])
+
+#endif /* __XENO_PERFC_H__ */
diff --git a/xen/include/xen/perfc_defn.h b/xen/include/xen/perfc_defn.h
new file mode 100644 (file)
index 0000000..f81b5bc
--- /dev/null
@@ -0,0 +1,24 @@
+
+PERFCOUNTER_CPU( irqs,         "#interrupts" )
+PERFCOUNTER_CPU( irq_time,     "cycles spent in irq handler" )
+
+PERFCOUNTER_CPU( apic_timer,   "apic timer interrupts" )
+PERFCOUNTER_CPU( ac_timer_max, "ac_timer max error (ns)" )
+PERFCOUNTER_CPU( sched_irq,    "sched: timer" )
+PERFCOUNTER_CPU( sched_run,    "sched: runs through scheduler" )
+PERFCOUNTER_CPU( sched_ctx,    "sched: context switches" )
+
+PERFCOUNTER( net_hypercalls, "network hypercalls" )
+PERFCOUNTER( net_rx_congestion_drop, "net rx congestion drops" )
+PERFCOUNTER( net_rx_capacity_drop, "net rx capacity drops" )
+PERFCOUNTER( net_rx_delivered, "net rx delivered" )
+PERFCOUNTER( net_tx_transmitted, "net tx transmitted" )
+
+PERFCOUNTER_CPU( domain_page_tlb_flush, "domain page tlb flushes" )
+PERFCOUNTER_CPU( need_flush_tlb_flush, "PG_need_flush tlb flushes" )
+
+PERFCOUNTER_CPU( calls_to_mmu_update, "calls_to_mmu_update" )
+PERFCOUNTER_CPU( num_page_updates, "num_page_updates" )
+
+
+
diff --git a/xen/include/xen/prefetch.h b/xen/include/xen/prefetch.h
new file mode 100644 (file)
index 0000000..8d7d3ff
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ *  Generic cache management functions. Everything is arch-specific,  
+ *  but this header exists to make sure the defines/functions can be
+ *  used in a generic way.
+ *
+ *  2000-11-13  Arjan van de Ven   <arjan@fenrus.demon.nl>
+ *
+ */
+
+#ifndef _LINUX_PREFETCH_H
+#define _LINUX_PREFETCH_H
+
+#include <asm/processor.h>
+#include <asm/cache.h>
+
+/*
+       prefetch(x) attempts to pre-emptively get the memory pointed to
+       by address "x" into the CPU L1 cache. 
+       prefetch(x) should not cause any kind of exception, prefetch(0) is
+       specifically ok.
+
+       prefetch() should be defined by the architecture, if not, the 
+       #define below provides a no-op define.  
+       
+       There are 3 prefetch() macros:
+       
+       prefetch(x)     - prefetches the cacheline at "x" for read
+       prefetchw(x)    - prefetches the cacheline at "x" for write
+       spin_lock_prefetch(x) - prefectches the spinlock *x for taking
+       
+       there is also PREFETCH_STRIDE which is the architecure-prefered 
+       "lookahead" size for prefetching streamed operations.
+       
+*/
+
+/*
+ *     These cannot be do{}while(0) macros. See the mental gymnastics in
+ *     the loop macro.
+ */
+#ifndef ARCH_HAS_PREFETCH
+#define ARCH_HAS_PREFETCH
+static inline void prefetch(const void *x) {;}
+#endif
+
+#ifndef ARCH_HAS_PREFETCHW
+#define ARCH_HAS_PREFETCHW
+static inline void prefetchw(const void *x) {;}
+#endif
+
+#ifndef ARCH_HAS_SPINLOCK_PREFETCH
+#define ARCH_HAS_SPINLOCK_PREFETCH
+#define spin_lock_prefetch(x) prefetchw(x)
+#endif
+
+#ifndef PREFETCH_STRIDE
+#define PREFETCH_STRIDE (4*L1_CACHE_BYTES)
+#endif
+
+#endif
diff --git a/xen/include/xen/rbtree.h b/xen/include/xen/rbtree.h
new file mode 100644 (file)
index 0000000..bb108d7
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+  Red Black Trees
+  (C) 1999  Andrea Arcangeli <andrea@suse.de>
+  
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+  linux/include/linux/rbtree.h
+
+  To use rbtrees you'll have to implement your own insert and search cores.
+  This will avoid us to use callbacks and to drop drammatically performances.
+  I know it's not the cleaner way,  but in C (not in C++) to get
+  performances and genericity...
+
+  Some example of insert and search follows here. The search is a plain
+  normal search over an ordered tree. The insert instead must be implemented
+  int two steps: as first thing the code must insert the element in
+  order as a red leaf in the tree, then the support library function
+  rb_insert_color() must be called. Such function will do the
+  not trivial work to rebalance the rbtree if necessary.
+
+-----------------------------------------------------------------------
+static inline struct page * rb_search_page_cache(struct inode * inode,
+                                                unsigned long offset)
+{
+       rb_node_t * n = inode->i_rb_page_cache.rb_node;
+       struct page * page;
+
+       while (n)
+       {
+               page = rb_entry(n, struct page, rb_page_cache);
+
+               if (offset < page->offset)
+                       n = n->rb_left;
+               else if (offset > page->offset)
+                       n = n->rb_right;
+               else
+                       return page;
+       }
+       return NULL;
+}
+
+static inline struct page * __rb_insert_page_cache(struct inode * inode,
+                                                  unsigned long offset,
+                                                  rb_node_t * node)
+{
+       rb_node_t ** p = &inode->i_rb_page_cache.rb_node;
+       rb_node_t * parent = NULL;
+       struct page * page;
+
+       while (*p)
+       {
+               parent = *p;
+               page = rb_entry(parent, struct page, rb_page_cache);
+
+               if (offset < page->offset)
+                       p = &(*p)->rb_left;
+               else if (offset > page->offset)
+                       p = &(*p)->rb_right;
+               else
+                       return page;
+       }
+
+       rb_link_node(node, parent, p);
+
+       return NULL;
+}
+
+static inline struct page * rb_insert_page_cache(struct inode * inode,
+                                                unsigned long offset,
+                                                rb_node_t * node)
+{
+       struct page * ret;
+       if ((ret = __rb_insert_page_cache(inode, offset, node)))
+               goto out;
+       rb_insert_color(node, &inode->i_rb_page_cache);
+ out:
+       return ret;
+}
+-----------------------------------------------------------------------
+*/
+
+#ifndef        _LINUX_RBTREE_H
+#define        _LINUX_RBTREE_H
+
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/module.h>
+
+typedef struct rb_node_s
+{
+       struct rb_node_s * rb_parent;
+       int rb_color;
+#define        RB_RED          0
+#define        RB_BLACK        1
+       struct rb_node_s * rb_right;
+       struct rb_node_s * rb_left;
+}
+rb_node_t;
+
+typedef struct rb_root_s
+{
+       struct rb_node_s * rb_node;
+}
+rb_root_t;
+
+#define RB_ROOT        (rb_root_t) { NULL, }
+#define        rb_entry(ptr, type, member)                                     \
+       ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
+
+extern void rb_insert_color(rb_node_t *, rb_root_t *);
+extern void rb_erase(rb_node_t *, rb_root_t *);
+
+static inline void rb_link_node(rb_node_t * node, rb_node_t * parent, rb_node_t ** rb_link)
+{
+       node->rb_parent = parent;
+       node->rb_color = RB_RED;
+       node->rb_left = node->rb_right = NULL;
+
+       *rb_link = node;
+}
+
+#endif /* _LINUX_RBTREE_H */
diff --git a/xen/include/xen/reboot.h b/xen/include/xen/reboot.h
new file mode 100644 (file)
index 0000000..248ec6e
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef _LINUX_REBOOT_H
+#define _LINUX_REBOOT_H
+
+/*
+ * Magic values required to use _reboot() system call.
+ */
+
+#define        LINUX_REBOOT_MAGIC1     0xfee1dead
+#define        LINUX_REBOOT_MAGIC2     672274793
+#define        LINUX_REBOOT_MAGIC2A    85072278
+#define        LINUX_REBOOT_MAGIC2B    369367448
+
+
+/*
+ * Commands accepted by the _reboot() system call.
+ *
+ * RESTART     Restart system using default command and mode.
+ * HALT        Stop OS and give system control to ROM monitor, if any.
+ * CAD_ON      Ctrl-Alt-Del sequence causes RESTART command.
+ * CAD_OFF     Ctrl-Alt-Del sequence sends SIGINT to init task.
+ * POWER_OFF   Stop OS and remove all power from system, if possible.
+ * RESTART2    Restart system using given command string.
+ */
+
+#define        LINUX_REBOOT_CMD_RESTART        0x01234567
+#define        LINUX_REBOOT_CMD_HALT           0xCDEF0123
+#define        LINUX_REBOOT_CMD_CAD_ON         0x89ABCDEF
+#define        LINUX_REBOOT_CMD_CAD_OFF        0x00000000
+#define        LINUX_REBOOT_CMD_POWER_OFF      0x4321FEDC
+#define        LINUX_REBOOT_CMD_RESTART2       0xA1B2C3D4
+
+
+#ifdef __KERNEL__
+
+#include <xen/notifier.h>
+
+extern int register_reboot_notifier(struct notifier_block *);
+extern int unregister_reboot_notifier(struct notifier_block *);
+
+
+/*
+ * Architecture-specific implementations of sys_reboot commands.
+ */
+
+extern void machine_restart(char *cmd);
+extern void machine_halt(void);
+extern void machine_power_off(void);
+
+#endif
+
+#endif /* _LINUX_REBOOT_H */
diff --git a/xen/include/xen/sched-if.h b/xen/include/xen/sched-if.h
new file mode 100644 (file)
index 0000000..683e73d
--- /dev/null
@@ -0,0 +1,90 @@
+#include <asm/types.h>
+
+/*
+ * Additional declarations for the generic scheduler interface.  This should
+ * only be included by files that implement conforming schedulers.
+ *
+ * Portions by Mark Williamson are (C) 2004 Intel Research Cambridge
+ */
+
+#define BUCKETS 10
+
+typedef struct schedule_data_st
+{
+    struct list_head    runqueue;       /* runqueue */
+    struct task_struct *curr;           /* current task */
+    struct task_struct *idle;           /* idle task for this cpu */
+    void *              sched_priv;
+    struct ac_timer     s_timer;        /* scheduling timer  */
+#ifdef BUCKETS
+    u32                 hist[BUCKETS];  /* for scheduler latency histogram */
+#endif
+} __cacheline_aligned schedule_data_t;
+
+
+typedef struct task_slice_st
+{
+    struct task_struct *task;
+    s_time_t            time;
+} task_slice_t;
+
+struct scheduler
+{
+    char *name;             /* full name for this scheduler      */
+    char *opt_name;         /* option name for this scheduler    */
+    unsigned int sched_id;  /* ID for this scheduler             */
+
+    int          (*init_scheduler) ();
+    int          (*alloc_task)     (struct task_struct *);
+    void         (*add_task)       (struct task_struct *);
+    void         (*free_task)      (struct task_struct *);
+    void         (*rem_task)       (struct task_struct *);
+    void         (*wake_up)        (struct task_struct *);
+    /* XXX why does do_block need to return anything at all? */
+    long         (*do_block)       (struct task_struct *);
+    task_slice_t (*do_schedule)    (s_time_t);
+    int          (*control)        (struct sched_ctl_cmd *);
+    int          (*adjdom)         (struct task_struct *,
+                                    struct sched_adjdom_cmd *);
+    s32          (*reschedule)     (struct task_struct *);
+    void         (*dump_settings)  (void);
+    void         (*dump_cpu_state) (int);
+    void         (*dump_runq_el)   (struct task_struct *);
+};
+
+/* per CPU scheduler information */
+extern schedule_data_t schedule_data[];
+
+/*
+ * Wrappers for run-queue management. Must be called with the schedule_lock
+ * held.
+ */
+static inline void __add_to_runqueue_head(struct task_struct * p)
+{    
+    list_add(&p->run_list, &schedule_data[p->processor].runqueue);
+}
+
+static inline void __add_to_runqueue_tail(struct task_struct * p)
+{
+    list_add_tail(&p->run_list, &schedule_data[p->processor].runqueue);
+}
+
+static inline void __del_from_runqueue(struct task_struct * p)
+{
+    list_del(&p->run_list);
+    p->run_list.next = NULL;
+}
+
+static inline int __task_on_runqueue(struct task_struct *p)
+{
+    return p->run_list.next != NULL;
+}
+
+#define next_domain(p) \\
+        list_entry((p)->run_list.next, struct task_struct, run_list)
+
+
+static inline int __runqueue_empty(int cpu)
+{
+    return list_empty(&schedule_data[cpu].runqueue);
+}
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
new file mode 100644 (file)
index 0000000..c41123e
--- /dev/null
@@ -0,0 +1,296 @@
+#ifndef _LINUX_SCHED_H
+#define _LINUX_SCHED_H
+
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/spinlock.h>
+#include <asm/ptrace.h>
+#include <xen/smp.h>
+#include <asm/page.h>
+#include <asm/processor.h>
+#include <hypervisor-ifs/hypervisor-if.h>
+#include <hypervisor-ifs/dom0_ops.h>
+
+#include <xen/list.h>
+#include <xen/time.h>
+#include <xen/ac_timer.h>
+#include <xen/delay.h>
+#include <xen/rbtree.h>
+
+#define STACK_SIZE (2*PAGE_SIZE)
+#include <asm/current.h>
+
+#define MAX_DOMAIN_NAME 16
+
+extern unsigned long volatile jiffies;
+extern rwlock_t tasklist_lock;
+
+extern struct timeval xtime;
+
+#include <xen/spinlock.h>
+
+extern struct mm_struct init_mm;
+
+#define _HYP_EVENT_NEED_RESCHED 0
+#define _HYP_EVENT_DIE          1
+
+#define PF_DONEFPUINIT  0 /* Has the FPU been initialised for this task? */
+#define PF_USEDFPU      1 /* Has this task used the FPU since last save? */
+#define PF_GUEST_STTS   2 /* Has the guest OS requested 'stts'?          */
+#define PF_CONSTRUCTED  3 /* Has the guest OS been fully built yet?      */
+#define PF_IDLETASK     4 /* Is this one of the per-CPU idle domains?    */
+#define PF_PRIVILEGED   5 /* Is this domain privileged?                  */
+#define PF_CONSOLEWRITEBUG 6 /* Has this domain used the obsolete console? */
+
+#include <xen/vif.h>
+#include <xen/vbd.h>
+
+#define IS_PRIV(_p) (test_bit(PF_PRIVILEGED, &(_p)->flags))
+
+struct task_struct;
+
+typedef struct event_channel_st
+{
+    struct task_struct *remote_dom;
+    u16                 remote_port;
+#define ECS_FREE         0 /* Available for use.                            */
+#define ECS_DISCONNECTED 1 /* Connection is closed. Remote is disconnected. */
+#define ECS_CONNECTED    2 /* Connected to remote end.                      */
+    u16                 state;
+} event_channel_t;
+
+struct task_struct 
+{
+    /*
+     * DO NOT CHANGE THE ORDER OF THE FOLLOWING.
+     * Their offsets are hardcoded in entry.S
+     */
+
+    unsigned short processor;    /* 00: current processor */
+    unsigned short hyp_events;   /* 02: pending intra-Xen events */
+
+    /* An unsafe pointer into a shared data area. */
+    shared_info_t *shared_info;  /* 04: shared data area */
+
+    /*
+     * Return vectors pushed to us by guest OS.
+     * The stack frame for events is exactly that of an x86 hardware interrupt.
+     * The stack frame for a failsafe callback is augmented with saved values
+     * for segment registers %ds, %es, %fs and %gs:
+     *         %ds, %es, %fs, %gs, %eip, %cs, %eflags [, %oldesp, %oldss]
+     */
+    unsigned long event_selector;    /* 08: entry CS  */
+    unsigned long event_address;     /* 12: entry EIP */
+
+    /* Saved DS,ES,FS,GS immediately before return to guest OS. */
+    unsigned long failsafe_selectors[4]; /* 16-32 */ 
+
+    /*
+     * END OF FIRST CACHELINE. Stuff above is touched a lot!
+     */
+
+    unsigned long failsafe_selector; /* 32: entry CS  */
+    unsigned long failsafe_address;  /* 36: entry EIP */
+
+    /*
+     * From here on things can be added and shuffled without special attention
+     */
+
+    domid_t domain;
+
+    spinlock_t       page_list_lock;
+    struct list_head page_list;
+    unsigned int     tot_pages; /* number of pages currently possesed */
+    unsigned int     max_pages; /* max number of pages that can be possesed */
+
+    /* Scheduling. */
+    struct list_head run_list;
+    int              has_cpu;
+    int              state;         /* current run state */
+    int              cpupinned;     /* true if pinned to curent CPU */
+    s_time_t         lastschd;      /* time this domain was last scheduled */
+    s_time_t         lastdeschd;    /* time this domain was last descheduled */
+    s_time_t         cpu_time;      /* total CPU time received till now */
+    s_time_t         wokenup;       /* time domain got woken up */
+    struct ac_timer  timer;         /* one-shot timer for timeout values */
+
+    s_time_t         min_slice;     /* minimum time before reschedule */
+
+    void *sched_priv;               /* scheduler-specific data */
+
+    /* Network I/O */
+    net_vif_t *net_vif_list[MAX_DOMAIN_VIFS];
+
+    /* Block I/O */
+    blk_ring_t *blk_ring_base;
+    BLK_RING_IDX blk_req_cons;  /* request consumer */
+    BLK_RING_IDX blk_resp_prod; /* (private version of) response producer */
+    struct list_head blkdev_list;
+    spinlock_t blk_ring_lock;
+    rb_root_t  vbd_rb;          /* mapping from 16-bit vdevices to vbds */
+    spinlock_t vbd_lock;        /* protects VBD mapping */
+
+    /* VM */
+    struct mm_struct mm;
+
+    mm_segment_t addr_limit;
+
+    char name[MAX_DOMAIN_NAME];
+
+    struct thread_struct thread;
+    struct task_struct *next_list, *next_hash;
+
+    /* Event channel information. */
+    event_channel_t *event_channel;
+    unsigned int     max_event_channel;
+    spinlock_t       event_channel_lock;
+
+    /* Physical I/O */
+    spinlock_t       pcidev_lock;
+    struct list_head pcidev_list;
+
+    unsigned long flags;
+
+    atomic_t refcnt;
+};
+
+/*
+ * domain states 
+ * TASK_RUNNING:         Domain is runable and should be on a run queue
+ * TASK_INTERRUPTIBLE:   Domain is blocked by may be woken up by an event
+ *                       or expiring timer
+ * TASK_UNINTERRUPTIBLE: Domain is blocked but may not be woken up by an
+ *                       arbitrary event or timer.
+ * TASK_STOPPED:         Domain is stopped.
+ * TASK_DYING:           Domain is about to cross over to the land of the dead.
+ */
+
+#define TASK_RUNNING             0
+#define TASK_INTERRUPTIBLE       1
+#define TASK_UNINTERRUPTIBLE     2
+#define TASK_STOPPED             4
+#define TASK_DYING               8
+#define TASK_SCHED_PRIV          16
+
+#include <asm/uaccess.h> /* for KERNEL_DS */
+
+#define IDLE0_TASK(_t)           \
+{                                \
+    processor:   0,              \
+    domain:      IDLE_DOMAIN_ID, \
+    state:       TASK_RUNNING,   \
+    has_cpu:     0,              \
+    mm:          IDLE0_MM,       \
+    addr_limit:  KERNEL_DS,      \
+    thread:      INIT_THREAD,    \
+    flags:       1<<PF_IDLETASK  \
+}
+
+extern struct task_struct idle0_task;
+
+extern struct task_struct *idle_task[NR_CPUS];
+#define IDLE_DOMAIN_ID   (~0ULL)
+#define is_idle_task(_p) (test_bit(PF_IDLETASK, &(_p)->flags))
+
+#include <xen/slab.h>
+
+void free_task_struct(struct task_struct *p);
+struct task_struct *alloc_task_struct();
+
+#define put_task_struct(_p) \
+  if ( atomic_dec_and_test(&(_p)->refcnt) ) release_task(_p)
+#define get_task_struct(_p)  \
+  atomic_inc(&(_p)->refcnt)
+
+extern struct task_struct *do_createdomain(
+    domid_t dom_id, unsigned int cpu);
+extern int setup_guestos(
+    struct task_struct *p, dom0_createdomain_t *params, unsigned int num_vifs,
+    char *data_start, unsigned long data_len, 
+    char *cmdline, unsigned long initrd_len);
+extern int final_setup_guestos(struct task_struct *p, dom0_builddomain_t *);
+
+struct task_struct *find_domain_by_id(domid_t dom);
+extern void release_task(struct task_struct *);
+extern void __kill_domain(struct task_struct *p);
+extern void kill_domain(void);
+extern void kill_domain_with_errmsg(const char *err);
+extern long kill_other_domain(domid_t dom, int force);
+extern void stop_domain(void);
+extern long stop_other_domain(domid_t dom);
+
+/* arch/process.c */
+void new_thread(struct task_struct *p,
+                unsigned long start_pc,
+                unsigned long start_stack,
+                unsigned long start_info);
+
+/* Linux puts these here for some reason! */
+extern int request_irq(unsigned int,
+                       void (*handler)(int, void *, struct pt_regs *),
+                       unsigned long, const char *, void *);
+extern void free_irq(unsigned int, void *);
+
+extern unsigned long wait_init_idle;
+#define init_idle() clear_bit(smp_processor_id(), &wait_init_idle);
+
+extern spinlock_t schedule_lock[NR_CPUS] __cacheline_aligned;
+
+/*
+ * Scheduler functions (in schedule.c)
+ */
+#define set_current_state(_s) do { current->state = (_s); } while (0)
+void scheduler_init(void);
+void schedulers_start(void);
+void sched_add_domain(struct task_struct *p);
+int  sched_rem_domain(struct task_struct *p);
+long sched_ctl(struct sched_ctl_cmd *);
+long sched_adjdom(struct sched_adjdom_cmd *);
+void init_idle_task(void);
+void __wake_up(struct task_struct *p);
+void wake_up(struct task_struct *p);
+void reschedule(struct task_struct *p);
+unsigned long __reschedule(struct task_struct *p);
+
+/* NB. Limited entry in Xen. Not for arbitrary use! */
+asmlinkage void __enter_scheduler(void);
+#define schedule() __schedule_not_callable_in_xen()
+
+extern void switch_to(struct task_struct *prev, 
+                      struct task_struct *next);
+
+
+/* A compatibility hack for Linux drivers. */
+#define MAX_SCHEDULE_TIMEOUT 0UL
+static inline long schedule_timeout(long timeout)
+{
+    set_current_state(TASK_RUNNING);
+    mdelay(timeout*(1000/HZ));
+    return 0;
+}
+
+#define signal_pending(_p) \
+    ((_p)->hyp_events ||   \
+     ((_p)->shared_info->events & (_p)->shared_info->events_mask))
+
+void domain_init(void);
+
+int idle_cpu(int cpu); /* Is CPU 'cpu' idle right now? */
+
+void startup_cpu_idle_loop(void);
+void continue_cpu_idle_loop(void);
+
+void continue_nonidle_task(void);
+
+/* This task_hash and task_list are protected by the tasklist_lock. */
+#define TASK_HASH_SIZE 256
+#define TASK_HASH(_id) ((int)(_id)&(TASK_HASH_SIZE-1))
+extern struct task_struct *task_hash[TASK_HASH_SIZE];
+extern struct task_struct *task_list;
+
+#define for_each_domain(_p) \
+ for ( (_p) = task_list; (_p) != NULL; (_p) = (_p)->next_list )
+
+extern void update_process_times(int user);
+
+#endif /*_LINUX_SCHED_H */
diff --git a/xen/include/xen/serial.h b/xen/include/xen/serial.h
new file mode 100644 (file)
index 0000000..3640fd0
--- /dev/null
@@ -0,0 +1,46 @@
+/******************************************************************************
+ * serial.h
+ * 
+ * Driver for 16550-series UARTs. This driver is to be kept within Xen as
+ * it permits debugging of seriously-toasted machines (e.g., in situations
+ * where a device driver within a guest OS would be inaccessible).
+ * 
+ * Copyright (c) 2003-2004, K A Fraser
+ */
+
+#ifndef __XEN_SERIAL_H__
+#define __XEN_SERIAL_H__
+
+#include <asm/ptrace.h>
+
+/* 'Serial handles' are comprise the following fields. */
+#define SERHND_IDX      (1<<0) /* COM1 or COM2?                           */
+#define SERHND_HI       (1<<1) /* Mux/demux each transferred char by MSB. */
+#define SERHND_LO       (1<<2) /* Ditto, except that the MSB is cleared.  */
+#define SERHND_COOKED   (1<<3) /* Newline/carriage-return translation?    */
+
+/* Two-stage initialisation (before/after IRQ-subsystem initialisation). */
+void serial_init_stage1(void);
+void serial_init_stage2(void);
+
+/* Takes a config string and creates a numeric handle on the COM port. */
+int parse_serial_handle(char *conf);
+
+/* Register a character-receive hook on the specified COM port. */
+typedef void (*serial_rx_fn)(unsigned char, struct pt_regs *);
+void serial_set_rx_handler(int handle, serial_rx_fn fn);
+
+/* Transmit a single character via the specified COM port. */
+void serial_putc(int handle, unsigned char c);
+
+/* Transmit a NULL-terminated string via the specified COM port. */
+void serial_puts(int handle, const unsigned char *s);
+
+/*
+ * An alternative to registering a character-receive hook. This function
+ * will not return until a character is available. It can safely be
+ * called with interrupts disabled.
+ */
+unsigned char serial_getc(int handle);
+
+#endif /* __XEN_SERIAL_H__ */
diff --git a/xen/include/xen/skbuff.h b/xen/include/xen/skbuff.h
new file mode 100644 (file)
index 0000000..213c63c
--- /dev/null
@@ -0,0 +1,454 @@
+/*
+ *     Definitions for the 'struct sk_buff' memory handlers.
+ *
+ *     Authors:
+ *             Alan Cox, <gw4pts@gw4pts.ampr.org>
+ *             Florian La Roche, <rzsfl@rz.uni-sb.de>
+ *
+ *     This program is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     as published by the Free Software Foundation; either version
+ *     2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_SKBUFF_H
+#define _LINUX_SKBUFF_H
+
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/time.h>
+#include <xen/timer.h>
+#include <xen/cache.h>
+#include <xen/slab.h>
+#include <asm/system.h>
+#include <asm/atomic.h>
+#include <asm/types.h>
+#include <xen/mm.h>
+#include <xen/vif.h>
+
+/* skb_type values */
+#define SKB_NORMAL               0 /* A Linux-style skbuff: no strangeness */
+#define SKB_ZERO_COPY            1 /* Zero copy skbs are used for receive  */
+#define SKB_NODATA               2 /* Data allocation not handled by us    */
+
+#define HAVE_ALLOC_SKB         /* For the drivers to know */
+#define HAVE_ALIGNABLE_SKB     /* Ditto 8)                */
+#define SLAB_SKB               /* Slabified skbuffs       */
+
+#define CHECKSUM_NONE 0
+#define CHECKSUM_HW 1
+#define CHECKSUM_UNNECESSARY 2
+
+#define SKB_DATA_ALIGN(X)      (((X) + (SMP_CACHE_BYTES-1)) & ~(SMP_CACHE_BYTES-1))
+
+/* A. Checksumming of received packets by device.
+ *
+ *     NONE: device failed to checksum this packet.
+ *             skb->csum is undefined.
+ *
+ *     UNNECESSARY: device parsed packet and wouldbe verified checksum.
+ *             skb->csum is undefined.
+ *           It is bad option, but, unfortunately, many of vendors do this.
+ *           Apparently with secret goal to sell you new device, when you
+ *           will add new protocol to your host. F.e. IPv6. 8)
+ *
+ *     HW: the most generic way. Device supplied checksum of _all_
+ *         the packet as seen by netif_rx in skb->csum.
+ *         NOTE: Even if device supports only some protocols, but
+ *         is able to produce some skb->csum, it MUST use HW,
+ *         not UNNECESSARY.
+ *
+ * B. Checksumming on output.
+ *
+ *     NONE: skb is checksummed by protocol or csum is not required.
+ *
+ *     HW: device is required to csum packet as seen by hard_start_xmit
+ *     from skb->h.raw to the end and to record the checksum
+ *     at skb->h.raw+skb->csum.
+ *
+ *     Device must show its capabilities in dev->features, set
+ *     at device setup time.
+ *     NETIF_F_HW_CSUM - it is clever device, it is able to checksum
+ *                       everything.
+ *     NETIF_F_NO_CSUM - loopback or reliable single hop media.
+ *     NETIF_F_IP_CSUM - device is dumb. It is able to csum only
+ *                       TCP/UDP over IPv4. Sigh. Vendors like this
+ *                       way by an unknown reason. Though, see comment above
+ *                       about CHECKSUM_UNNECESSARY. 8)
+ */
+
+#ifdef __i386__
+#define NET_CALLER(arg) (*(((void**)&arg)-1))
+#else
+#define NET_CALLER(arg) __builtin_return_address(0)
+#endif
+
+struct sk_buff_head {
+    /* These two members must be first. */
+    struct sk_buff     * next;
+    struct sk_buff     * prev;
+    __u32              qlen;
+};
+
+#define MAX_SKB_FRAGS 1 /* KAF: was 6 */
+
+typedef struct skb_frag_struct {
+    struct pfn_info *page;
+    __u16 page_offset;
+    __u16 size;
+} skb_frag_t;
+
+struct skb_shared_info {
+    unsigned int nr_frags;
+    skb_frag_t frags[MAX_SKB_FRAGS];
+};
+
+struct sk_buff {
+    /* These two members must be first. */
+    struct sk_buff     * next;                 /* Next buffer in list                          */
+    struct sk_buff     * prev;                 /* Previous buffer in list                      */
+
+    struct sk_buff_head * list;                /* List we are on                               */
+    struct net_device  *dev;           /* Device we arrived on/are leaving by          */
+
+    /* Transport layer header */
+    union
+    {
+        struct tcphdr  *th;
+        struct udphdr  *uh;
+        struct icmphdr *icmph;
+        struct igmphdr *igmph;
+        struct iphdr   *ipiph;
+        struct spxhdr  *spxh;
+        unsigned char  *raw;
+    } h;
+
+    /* Network layer header */
+    union
+    {
+        struct iphdr   *iph;
+        struct ipv6hdr *ipv6h;
+        struct arphdr  *arph;
+        struct ipxhdr  *ipxh;
+        unsigned char  *raw;
+    } nh;
+  
+    /* Link layer header */
+    union 
+    {  
+        struct ethhdr  *ethernet;
+        unsigned char  *raw;
+    } mac;
+
+    unsigned int       len;                    /* Length of actual data                        */
+    unsigned int       data_len;
+    unsigned int       csum;                   /* Checksum                                     */
+    unsigned char      skb_type,
+        pkt_type,              /* Packet class                                 */
+        ip_summed;             /* Driver fed us an IP checksum                 */
+    unsigned short     protocol;               /* Packet protocol from driver.                 */
+    unsigned char      *head;                  /* Head of buffer                               */
+    unsigned char      *data;                  /* Data head pointer                            */
+    unsigned char      *tail;                  /* Tail pointer                                 */
+    unsigned char      *end;                   /* End pointer                                  */
+
+    void               (*destructor)(struct sk_buff *);        /* Destruct function            */
+
+    unsigned short guest_id;  /* guest-OS's id for this packet (tx only!)   */
+    struct pfn_info *pf;      /* record of physical pf address for freeing  */
+    net_vif_t *src_vif;       /* vif we came from                           */
+    net_vif_t *dst_vif;       /* vif we are bound for                       */
+    struct skb_shared_info shinfo; /* shared info not shared in Xen.        */
+};
+
+extern void           __kfree_skb(struct sk_buff *skb);
+extern struct sk_buff *alloc_skb(unsigned int size, int priority);
+extern struct sk_buff *alloc_skb_nodata(int priority);
+extern struct sk_buff *alloc_zc_skb(unsigned int size, int priority);
+extern void           kfree_skbmem(struct sk_buff *skb);
+extern struct sk_buff *skb_copy(const struct sk_buff *skb, int priority);
+#define dev_kfree_skb(a)       kfree_skb(a)
+extern void    skb_over_panic(struct sk_buff *skb, int len, void *here);
+extern void    skb_under_panic(struct sk_buff *skb, int len, void *here);
+
+/* In Xen, we don't clone skbs, so shared data can go in the sk_buff struct. */
+#define skb_shinfo(SKB)     ((struct skb_shared_info *)(&(SKB)->shinfo))
+
+/**
+ *     kfree_skb - free an sk_buff
+ *     @skb: buffer to free
+ *
+ *     Drop a reference to the buffer and free it if the usage count has
+ *     hit zero.
+ */
+static inline void kfree_skb(struct sk_buff *skb)
+{
+    __kfree_skb(skb);
+}
+
+/**
+ *     skb_queue_len   - get queue length
+ *     @list_: list to measure
+ *
+ *     Return the length of an &sk_buff queue. 
+ */
+static inline __u32 skb_queue_len(struct sk_buff_head *list_)
+{
+    return(list_->qlen);
+}
+
+static inline void skb_queue_head_init(struct sk_buff_head *list)
+{
+    list->prev = (struct sk_buff *)list;
+    list->next = (struct sk_buff *)list;
+    list->qlen = 0;
+}
+
+/**
+ *     __skb_queue_head - queue a buffer at the list head
+ *     @list: list to use
+ *     @newsk: buffer to queue
+ *
+ *     A buffer cannot be placed on two lists at the same time.
+ */    
+static inline void __skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk)
+{
+    struct sk_buff *prev, *next;
+
+    newsk->list = list;
+    list->qlen++;
+    prev = (struct sk_buff *)list;
+    next = prev->next;
+    newsk->next = next;
+    newsk->prev = prev;
+    next->prev = newsk;
+    prev->next = newsk;
+}
+
+/**
+ *      __skb_queue_tail - queue a buffer at the list tail
+ *      @list: list to use
+ *      @newsk: buffer to queue
+ *
+ *      A buffer cannot be placed on two lists at the same time.
+ */ 
+
+static inline void __skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk)
+{
+        struct sk_buff *prev, *next;
+
+        newsk->list = list;
+        list->qlen++;
+        next = (struct sk_buff *)list;
+        prev = next->prev;
+        newsk->next = next;
+        newsk->prev = prev;
+        next->prev = newsk;
+        prev->next = newsk;
+}
+
+/**
+ *     __skb_dequeue - remove from the head of the queue
+ *     @list: list to dequeue from
+ *
+ *     Remove the head of the list. This function does not take any locks
+ *     so must be used with appropriate locks held only. The head item is
+ *     returned or %NULL if the list is empty.
+ */
+
+static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list)
+{
+    struct sk_buff *next, *prev, *result;
+
+    prev = (struct sk_buff *) list;
+    next = prev->next;
+    result = NULL;
+    if (next != prev) {
+        result = next;
+        next = next->next;
+        list->qlen--;
+        next->prev = prev;
+        prev->next = next;
+        result->next = NULL;
+        result->prev = NULL;
+        result->list = NULL;
+    }
+    return result;
+}
+
+static inline int skb_is_nonlinear(const struct sk_buff *skb)
+{
+    return skb->data_len;
+}
+
+static inline unsigned int skb_headlen(const struct sk_buff *skb)
+{
+        return skb->len - skb->data_len;
+}
+                                                                                
+#define SKB_LINEAR_ASSERT(skb) do { if (skb_is_nonlinear(skb)) BUG(); } while (0)
+
+/*
+ *     Add data to an sk_buff
+ */
+static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
+{
+    unsigned char *tmp=skb->tail;
+    SKB_LINEAR_ASSERT(skb);
+    skb->tail+=len;
+    skb->len+=len;
+    return tmp;
+}
+
+/**
+ *     skb_put - add data to a buffer
+ *     @skb: buffer to use 
+ *     @len: amount of data to add
+ *
+ *     This function extends the used data area of the buffer. If this would
+ *     exceed the total buffer size the kernel will panic. A pointer to the
+ *     first byte of the extra data is returned.
+ */
+static inline unsigned char *skb_put(struct sk_buff *skb, unsigned int len)
+{
+    unsigned char *tmp=skb->tail;
+    SKB_LINEAR_ASSERT(skb);
+    skb->tail+=len;
+    skb->len+=len;
+    if(skb->tail>skb->end) {
+        skb_over_panic(skb, len, current_text_addr());
+    }
+    return tmp;
+}
+
+static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
+{
+    skb->data-=len;
+    skb->len+=len;
+    return skb->data;
+}
+
+/**
+ *     skb_push - add data to the start of a buffer
+ *     @skb: buffer to use 
+ *     @len: amount of data to add
+ *
+ *     This function extends the used data area of the buffer at the buffer
+ *     start. If this would exceed the total buffer headroom the kernel will
+ *     panic. A pointer to the first byte of the extra data is returned.
+ */
+
+static inline unsigned char *skb_push(struct sk_buff *skb, unsigned int len)
+{
+    skb->data-=len;
+    skb->len+=len;
+    if(skb->data<skb->head) {
+        skb_under_panic(skb, len, current_text_addr());
+    }
+    return skb->data;
+}
+
+static inline char *__skb_pull(struct sk_buff *skb, unsigned int len)
+{
+    skb->len-=len;
+    if (skb->len < skb->data_len)
+        BUG();
+    return     skb->data+=len;
+}
+
+/**
+ *     skb_pull - remove data from the start of a buffer
+ *     @skb: buffer to use 
+ *     @len: amount of data to remove
+ *
+ *     This function removes data from the start of a buffer, returning
+ *     the memory to the headroom. A pointer to the next data in the buffer
+ *     is returned. Once the data has been pulled future pushes will overwrite
+ *     the old data.
+ */
+
+static inline unsigned char * skb_pull(struct sk_buff *skb, unsigned int len)
+{      
+    if (len > skb->len)
+        return NULL;
+    return __skb_pull(skb,len);
+}
+
+/**
+ *     skb_reserve - adjust headroom
+ *     @skb: buffer to alter
+ *     @len: bytes to move
+ *
+ *     Increase the headroom of an empty &sk_buff by reducing the tail
+ *     room. This is only allowed for an empty buffer.
+ */
+
+static inline void skb_reserve(struct sk_buff *skb, unsigned int len)
+{
+    skb->data+=len;
+    skb->tail+=len;
+}
+
+/**
+ *     __dev_alloc_skb - allocate an skbuff for sending
+ *     @length: length to allocate
+ *     @gfp_mask: get_free_pages mask, passed to alloc_skb
+ *
+ *     Allocate a new &sk_buff and assign it a usage count of one. The
+ *     buffer has unspecified headroom built in. Users should allocate
+ *     the headroom they think they need without accounting for the
+ *     built in space. The built in space is used for optimisations.
+ *
+ *     %NULL is returned in there is no free memory.
+ */
+static inline struct sk_buff *__dev_alloc_skb(unsigned int length,
+                                             int gfp_mask)
+{
+    struct sk_buff *skb;
+    skb = alloc_zc_skb(length+16, gfp_mask);
+    if (skb)
+        skb_reserve(skb,16);
+    return skb;
+}
+
+/**
+ *     dev_alloc_skb - allocate an skbuff for sending
+ *     @length: length to allocate
+ *
+ *     Allocate a new &sk_buff and assign it a usage count of one. The
+ *     buffer has unspecified headroom built in. Users should allocate
+ *     the headroom they think they need without accounting for the
+ *     built in space. The built in space is used for optimisations.
+ *
+ *     %NULL is returned in there is no free memory. Although this function
+ *     allocates memory it can be called from an interrupt.
+ */
+static inline struct sk_buff *dev_alloc_skb(unsigned int length)
+{
+    return __dev_alloc_skb(length, GFP_ATOMIC);
+}
+
+#include <asm/domain_page.h>
+
+static inline void *kmap_skb_frag(const skb_frag_t *frag)
+{
+    return map_domain_mem(__pa(page_address(frag->page)));
+}
+
+static inline void kunmap_skb_frag(void *vaddr)
+{
+    unmap_domain_mem(vaddr);
+}
+
+extern int skb_copy_bits(const struct sk_buff *skb, 
+                         int offset, void *to, int len);
+extern void skb_init(void);
+
+#endif /* _LINUX_SKBUFF_H */
diff --git a/xen/include/xen/slab.h b/xen/include/xen/slab.h
new file mode 100644 (file)
index 0000000..ea40a13
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * linux/mm/slab.h
+ * Written by Mark Hemment, 1996.
+ * (markhe@nextd.demon.co.uk)
+ */
+
+#if    !defined(_LINUX_SLAB_H)
+#define        _LINUX_SLAB_H
+
+typedef struct kmem_cache_s kmem_cache_t;
+
+#include       <xen/mm.h>
+#include       <xen/cache.h>
+
+/* flags for kmem_cache_alloc() */
+#define        SLAB_NOFS               GFP_NOFS
+#define        SLAB_NOIO               GFP_NOIO
+#define SLAB_NOHIGHIO          GFP_NOHIGHIO
+#define        SLAB_ATOMIC             GFP_ATOMIC
+#define        SLAB_USER               GFP_USER
+#define        SLAB_KERNEL             GFP_KERNEL
+#define        SLAB_NFS                GFP_NFS
+#define        SLAB_DMA                GFP_DMA
+
+#define SLAB_LEVEL_MASK                (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_HIGHIO|__GFP_FS)
+#define        SLAB_NO_GROW            0x00001000UL    /* don't grow a cache */
+
+/* flags to pass to kmem_cache_create().
+ * The first 3 are only valid when the allocator as been build
+ * SLAB_DEBUG_SUPPORT.
+ */
+#define        SLAB_DEBUG_FREE         0x00000100UL    /* Peform (expensive) checks on free */
+#define        SLAB_DEBUG_INITIAL      0x00000200UL    /* Call constructor (as verifier) */
+#define        SLAB_RED_ZONE           0x00000400UL    /* Red zone objs in a cache */
+#define        SLAB_POISON             0x00000800UL    /* Poison objects */
+#define        SLAB_NO_REAP            0x00001000UL    /* never reap from the cache */
+#define        SLAB_HWCACHE_ALIGN      0x00002000UL    /* align objs on a h/w cache lines */
+#define SLAB_CACHE_DMA         0x00004000UL    /* use GFP_DMA memory */
+
+/* flags passed to a constructor func */
+#define        SLAB_CTOR_CONSTRUCTOR   0x001UL         /* if not set, then deconstructor */
+#define SLAB_CTOR_ATOMIC       0x002UL         /* tell constructor it can't sleep */
+#define        SLAB_CTOR_VERIFY        0x004UL         /* tell constructor it's a verify call */
+
+/* prototypes */
+extern void kmem_cache_init(void);
+extern void kmem_cache_sizes_init(unsigned long);
+
+extern kmem_cache_t *kmem_find_general_cachep(size_t, int gfpflags);
+extern kmem_cache_t *kmem_cache_create(const char *, size_t, size_t, unsigned long,
+                                      void (*)(void *, kmem_cache_t *, unsigned long),
+                                      void (*)(void *, kmem_cache_t *, unsigned long));
+extern int kmem_cache_destroy(kmem_cache_t *);
+extern int kmem_cache_shrink(kmem_cache_t *);
+extern void *kmem_cache_alloc(kmem_cache_t *, int);
+extern void kmem_cache_free(kmem_cache_t *, void *);
+
+extern void *kmalloc(size_t, int);
+extern void kfree(const void *);
+
+extern int FASTCALL(kmem_cache_reap(int));
+
+extern void dump_slabinfo();
+
+#if 0
+extern int slabinfo_read_proc(char *page, char **start, off_t off,
+                                int count, int *eof, void *data);
+extern int slabinfo_write_proc(struct file *file, const char *buffer,
+                          unsigned long count, void *data);
+#endif
+
+/* System wide caches */
+extern kmem_cache_t    *vm_area_cachep;
+extern kmem_cache_t    *mm_cachep;
+extern kmem_cache_t    *names_cachep;
+extern kmem_cache_t    *files_cachep;
+extern kmem_cache_t    *filp_cachep;
+extern kmem_cache_t    *dquot_cachep;
+extern kmem_cache_t    *bh_cachep;
+extern kmem_cache_t    *fs_cachep;
+extern kmem_cache_t    *sigact_cachep;
+
+
+#endif /* _LINUX_SLAB_H */
diff --git a/xen/include/xen/smp.h b/xen/include/xen/smp.h
new file mode 100644 (file)
index 0000000..2cb8818
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef __LINUX_SMP_H
+#define __LINUX_SMP_H
+
+/*
+ *     Generic SMP support
+ *             Alan Cox. <alan@redhat.com>
+ */
+
+#include <xen/config.h>
+
+#ifdef CONFIG_SMP
+
+#include <asm/smp.h>
+
+/*
+ * main cross-CPU interfaces, handles INIT, TLB flush, STOP, etc.
+ * (defined in asm header):
+ */ 
+
+/*
+ * stops all CPUs but the current one:
+ */
+extern void smp_send_stop(void);
+
+extern void FASTCALL(smp_send_event_check_mask(unsigned long cpu_mask));
+#define smp_send_event_check_cpu(_cpu) smp_send_event_check_mask(1<<(_cpu))
+
+
+/*
+ * Boot processor call to load the other CPU's
+ */
+extern void smp_boot_cpus(void);
+
+/*
+ * Processor call in. Must hold processors until ..
+ */
+extern void smp_callin(void);
+
+/*
+ * Multiprocessors may now schedule
+ */
+extern void smp_commence(void);
+
+/*
+ * Call a function on all other processors
+ */
+extern int smp_call_function (void (*func) (void *info), void *info,
+                             int retry, int wait);
+
+/*
+ * True once the per process idle is forked
+ */
+extern int smp_threads_ready;
+
+extern int smp_num_cpus;
+
+extern volatile unsigned long smp_msg_data;
+extern volatile int smp_src_cpu;
+extern volatile int smp_msg_id;
+
+#define MSG_ALL_BUT_SELF       0x8000  /* Assume <32768 CPU's */
+#define MSG_ALL                        0x8001
+
+#define MSG_INVALIDATE_TLB     0x0001  /* Remote processor TLB invalidate */
+#define MSG_STOP_CPU           0x0002  /* Sent to shut down slave CPU's
+                                        * when rebooting
+                                        */
+#define MSG_RESCHEDULE         0x0003  /* Reschedule request from master CPU*/
+#define MSG_CALL_FUNCTION       0x0004  /* Call function on all other CPUs */
+
+#else
+
+/*
+ *     These macros fold the SMP functionality into a single CPU system
+ */
+#define smp_num_cpus                           1
+#define smp_processor_id()                     0
+#define hard_smp_processor_id()                        0
+#define smp_threads_ready                      1
+#define kernel_lock()
+#define cpu_logical_map(cpu)                   0
+#define cpu_number_map(cpu)                    0
+#define smp_call_function(func,info,retry,wait)        ({ 0; })
+#define cpu_online_map                         1
+
+#endif
+#endif
diff --git a/xen/include/xen/socket.h b/xen/include/xen/socket.h
new file mode 100644 (file)
index 0000000..e0a060e
--- /dev/null
@@ -0,0 +1,136 @@
+#ifndef _LINUX_SOCKET_H
+#define _LINUX_SOCKET_H
+
+#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+
+//#include <asm/socket.h>                      /* arch-dependent defines       */
+#include <xen/sockios.h>               /* the SIOCxxx I/O controls     */
+//#include <xen/uio.h>                 /* iovec support                */
+#include <xen/types.h>         /* pid_t                        */
+
+typedef unsigned short sa_family_t;
+
+/*
+ *     1003.1g requires sa_family_t and that sa_data is char.
+ */
+struct sockaddr {
+       sa_family_t     sa_family;      /* address family, AF_xxx       */
+       char            sa_data[14];    /* 14 bytes of protocol address */
+};
+
+/* Supported address families. */
+#define AF_UNSPEC      0
+#define AF_UNIX                1       /* Unix domain sockets          */
+#define AF_LOCAL       1       /* POSIX name for AF_UNIX       */
+#define AF_INET                2       /* Internet IP Protocol         */
+#define AF_AX25                3       /* Amateur Radio AX.25          */
+#define AF_IPX         4       /* Novell IPX                   */
+#define AF_APPLETALK   5       /* AppleTalk DDP                */
+#define AF_NETROM      6       /* Amateur Radio NET/ROM        */
+#define AF_BRIDGE      7       /* Multiprotocol bridge         */
+#define AF_ATMPVC      8       /* ATM PVCs                     */
+#define AF_X25         9       /* Reserved for X.25 project    */
+#define AF_INET6       10      /* IP version 6                 */
+#define AF_ROSE                11      /* Amateur Radio X.25 PLP       */
+#define AF_DECnet      12      /* Reserved for DECnet project  */
+#define AF_NETBEUI     13      /* Reserved for 802.2LLC project*/
+#define AF_SECURITY    14      /* Security callback pseudo AF */
+#define AF_KEY         15      /* PF_KEY key management API */
+#define AF_NETLINK     16
+#define AF_ROUTE       AF_NETLINK /* Alias to emulate 4.4BSD */
+#define AF_PACKET      17      /* Packet family                */
+#define AF_ASH         18      /* Ash                          */
+#define AF_ECONET      19      /* Acorn Econet                 */
+#define AF_ATMSVC      20      /* ATM SVCs                     */
+#define AF_SNA         22      /* Linux SNA Project (nutters!) */
+#define AF_IRDA                23      /* IRDA sockets                 */
+#define AF_PPPOX       24      /* PPPoX sockets                */
+#define AF_WANPIPE     25      /* Wanpipe API Sockets */
+#define AF_BLUETOOTH   31      /* Bluetooth sockets            */
+#define AF_MAX         32      /* For now.. */
+
+/* Protocol families, same as address families. */
+#define PF_UNSPEC      AF_UNSPEC
+#define PF_UNIX                AF_UNIX
+#define PF_LOCAL       AF_LOCAL
+#define PF_INET                AF_INET
+#define PF_AX25                AF_AX25
+#define PF_IPX         AF_IPX
+#define PF_APPLETALK   AF_APPLETALK
+#define        PF_NETROM       AF_NETROM
+#define PF_BRIDGE      AF_BRIDGE
+#define PF_ATMPVC      AF_ATMPVC
+#define PF_X25         AF_X25
+#define PF_INET6       AF_INET6
+#define PF_ROSE                AF_ROSE
+#define PF_DECnet      AF_DECnet
+#define PF_NETBEUI     AF_NETBEUI
+#define PF_SECURITY    AF_SECURITY
+#define PF_KEY         AF_KEY
+#define PF_NETLINK     AF_NETLINK
+#define PF_ROUTE       AF_ROUTE
+#define PF_PACKET      AF_PACKET
+#define PF_ASH         AF_ASH
+#define PF_ECONET      AF_ECONET
+#define PF_ATMSVC      AF_ATMSVC
+#define PF_SNA         AF_SNA
+#define PF_IRDA                AF_IRDA
+#define PF_PPPOX       AF_PPPOX
+#define PF_WANPIPE     AF_WANPIPE
+#define PF_BLUETOOTH   AF_BLUETOOTH
+#define PF_MAX         AF_MAX
+
+/* Maximum queue length specifiable by listen.  */
+#define SOMAXCONN      128
+
+/* Flags we can use with send/ and recv. 
+   Added those for 1003.1g not all are supported yet
+ */
+#define MSG_OOB                1
+#define MSG_PEEK       2
+#define MSG_DONTROUTE  4
+#define MSG_TRYHARD     4       /* Synonym for MSG_DONTROUTE for DECnet */
+#define MSG_CTRUNC     8
+#define MSG_PROBE      0x10    /* Do not send. Only probe path f.e. for MTU */
+#define MSG_TRUNC      0x20
+#define MSG_DONTWAIT   0x40    /* Nonblocking io                */
+#define MSG_EOR         0x80   /* End of record */
+#define MSG_WAITALL    0x100   /* Wait for a full request */
+#define MSG_FIN         0x200
+#define MSG_SYN                0x400
+#define MSG_CONFIRM    0x800   /* Confirm path validity */
+#define MSG_RST                0x1000
+#define MSG_ERRQUEUE   0x2000  /* Fetch message from error queue */
+#define MSG_NOSIGNAL   0x4000  /* Do not generate SIGPIPE */
+#define MSG_MORE       0x8000  /* Sender will send more */
+
+#define MSG_EOF         MSG_FIN
+
+
+/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */
+#define SOL_IP         0
+/* #define SOL_ICMP    1       No-no-no! Due to Linux :-) we cannot use SOL_ICMP=1 */
+#define SOL_TCP                6
+#define SOL_UDP                17
+#define SOL_IPV6       41
+#define SOL_ICMPV6     58
+#define SOL_RAW                255
+#define SOL_IPX                256
+#define SOL_AX25       257
+#define SOL_ATALK      258
+#define SOL_NETROM     259
+#define SOL_ROSE       260
+#define SOL_DECNET     261
+#define        SOL_X25         262
+#define SOL_PACKET     263
+#define SOL_ATM                264     /* ATM layer (cell level) */
+#define SOL_AAL                265     /* ATM Adaption Layer (packet level) */
+#define SOL_IRDA        266
+
+/* IPX options */
+#define IPX_TYPE       1
+
+#endif /* not kernel and not glibc */
+#endif /* _LINUX_SOCKET_H */
diff --git a/xen/include/xen/sockios.h b/xen/include/xen/sockios.h
new file mode 100644 (file)
index 0000000..a0ad810
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Definitions of the socket-level I/O control calls.
+ *
+ * Version:    @(#)sockios.h   1.0.2   03/09/93
+ *
+ * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_SOCKIOS_H
+#define _LINUX_SOCKIOS_H
+
+//#include <asm/sockios.h>
+
+/* Linux-specific socket ioctls */
+#define SIOCINQ                FIONREAD
+#define SIOCOUTQ       TIOCOUTQ
+
+/* Routing table calls. */
+#define SIOCADDRT      0x890B          /* add routing table entry      */
+#define SIOCDELRT      0x890C          /* delete routing table entry   */
+#define SIOCRTMSG      0x890D          /* call to routing system       */
+
+/* Socket configuration controls. */
+#define SIOCGIFNAME    0x8910          /* get iface name               */
+#define SIOCSIFLINK    0x8911          /* set iface channel            */
+#define SIOCGIFCONF    0x8912          /* get iface list               */
+#define SIOCGIFFLAGS   0x8913          /* get flags                    */
+#define SIOCSIFFLAGS   0x8914          /* set flags                    */
+#define SIOCGIFADDR    0x8915          /* get PA address               */
+#define SIOCSIFADDR    0x8916          /* set PA address               */
+#define SIOCGIFDSTADDR 0x8917          /* get remote PA address        */
+#define SIOCSIFDSTADDR 0x8918          /* set remote PA address        */
+#define SIOCGIFBRDADDR 0x8919          /* get broadcast PA address     */
+#define SIOCSIFBRDADDR 0x891a          /* set broadcast PA address     */
+#define SIOCGIFNETMASK 0x891b          /* get network PA mask          */
+#define SIOCSIFNETMASK 0x891c          /* set network PA mask          */
+#define SIOCGIFMETRIC  0x891d          /* get metric                   */
+#define SIOCSIFMETRIC  0x891e          /* set metric                   */
+#define SIOCGIFMEM     0x891f          /* get memory address (BSD)     */
+#define SIOCSIFMEM     0x8920          /* set memory address (BSD)     */
+#define SIOCGIFMTU     0x8921          /* get MTU size                 */
+#define SIOCSIFMTU     0x8922          /* set MTU size                 */
+#define SIOCSIFNAME    0x8923          /* set interface name */
+#define        SIOCSIFHWADDR   0x8924          /* set hardware address         */
+#define SIOCGIFENCAP   0x8925          /* get/set encapsulations       */
+#define SIOCSIFENCAP   0x8926          
+#define SIOCGIFHWADDR  0x8927          /* Get hardware address         */
+#define SIOCGIFSLAVE   0x8929          /* Driver slaving support       */
+#define SIOCSIFSLAVE   0x8930
+#define SIOCADDMULTI   0x8931          /* Multicast address lists      */
+#define SIOCDELMULTI   0x8932
+#define SIOCGIFINDEX   0x8933          /* name -> if_index mapping     */
+#define SIOGIFINDEX    SIOCGIFINDEX    /* misprint compatibility :-)   */
+#define SIOCSIFPFLAGS  0x8934          /* set/get extended flags set   */
+#define SIOCGIFPFLAGS  0x8935
+#define SIOCDIFADDR    0x8936          /* delete PA address            */
+#define        SIOCSIFHWBROADCAST      0x8937  /* set hardware broadcast addr  */
+#define SIOCGIFCOUNT   0x8938          /* get number of devices */
+
+#define SIOCGIFBR      0x8940          /* Bridging support             */
+#define SIOCSIFBR      0x8941          /* Set bridging options         */
+
+#define SIOCGIFDIVERT  0x8944          /* Frame diversion support */
+#define SIOCSIFDIVERT  0x8945          /* Set frame diversion options */
+
+#define SIOCETHTOOL    0x8946          /* Ethtool interface            */
+
+#define SIOCGMIIPHY    0x8947          /* Get address of MII PHY in use. */
+#define SIOCGMIIREG    0x8948          /* Read MII PHY register.       */
+#define SIOCSMIIREG    0x8949          /* Write MII PHY register.      */
+
+/* ARP cache control calls. */
+                   /*  0x8950 - 0x8952  * obsolete calls, don't re-use */
+#define SIOCDARP       0x8953          /* delete ARP table entry       */
+#define SIOCGARP       0x8954          /* get ARP table entry          */
+#define SIOCSARP       0x8955          /* set ARP table entry          */
+
+/* RARP cache control calls. */
+#define SIOCDRARP      0x8960          /* delete RARP table entry      */
+#define SIOCGRARP      0x8961          /* get RARP table entry         */
+#define SIOCSRARP      0x8962          /* set RARP table entry         */
+
+/* Driver configuration calls */
+
+#define SIOCGIFMAP     0x8970          /* Get device parameters        */
+#define SIOCSIFMAP     0x8971          /* Set device parameters        */
+
+/* DLCI configuration calls */
+
+#define SIOCADDDLCI    0x8980          /* Create new DLCI device       */
+#define SIOCDELDLCI    0x8981          /* Delete DLCI device           */
+
+#define SIOCGIFVLAN    0x8982          /* 802.1Q VLAN support          */
+#define SIOCSIFVLAN    0x8983          /* Set 802.1Q VLAN options      */
+
+/* bonding calls */
+
+#define SIOCBONDENSLAVE        0x8990          /* enslave a device to the bond */
+#define SIOCBONDRELEASE 0x8991         /* release a slave from the bond*/
+#define SIOCBONDSETHWADDR      0x8992  /* set the hw addr of the bond  */
+#define SIOCBONDSLAVEINFOQUERY 0x8993   /* rtn info about slave state   */
+#define SIOCBONDINFOQUERY      0x8994  /* rtn info about bond state    */
+#define SIOCBONDCHANGEACTIVE   0x8995   /* update to a new active slave */
+                       
+/* Device private ioctl calls */
+
+/*
+ *     These 16 ioctls are available to devices via the do_ioctl() device
+ *     vector. Each device should include this file and redefine these names
+ *     as their own. Because these are device dependent it is a good idea
+ *     _NOT_ to issue them to random objects and hope.
+ *
+ *     THESE IOCTLS ARE _DEPRECATED_ AND WILL DISAPPEAR IN 2.5.X -DaveM
+ */
+#define SIOCDEVPRIVATE 0x89F0  /* to 89FF */
+
+/*
+ *     These 16 ioctl calls are protocol private
+ */
+#define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */
+#endif /* _LINUX_SOCKIOS_H */
diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h
new file mode 100644 (file)
index 0000000..5da73ba
--- /dev/null
@@ -0,0 +1,142 @@
+#ifndef __LINUX_SPINLOCK_H
+#define __LINUX_SPINLOCK_H
+
+#include <xen/config.h>
+#include <asm/system.h>
+
+/*
+ * These are the generic versions of the spinlocks and read-write
+ * locks..
+ */
+#define spin_lock_irqsave(lock, flags)         do { local_irq_save(flags);       spin_lock(lock); } while (0)
+#define spin_lock_irq(lock)                    do { local_irq_disable();         spin_lock(lock); } while (0)
+#define spin_lock_bh(lock)                     do { local_bh_disable();          spin_lock(lock); } while (0)
+
+#define read_lock_irqsave(lock, flags)         do { local_irq_save(flags);       read_lock(lock); } while (0)
+#define read_lock_irq(lock)                    do { local_irq_disable();         read_lock(lock); } while (0)
+#define read_lock_bh(lock)                     do { local_bh_disable();          read_lock(lock); } while (0)
+
+#define write_lock_irqsave(lock, flags)                do { local_irq_save(flags);      write_lock(lock); } while (0)
+#define write_lock_irq(lock)                   do { local_irq_disable();        write_lock(lock); } while (0)
+#define write_lock_bh(lock)                    do { local_bh_disable();         write_lock(lock); } while (0)
+
+#define spin_unlock_irqrestore(lock, flags)    do { spin_unlock(lock);  local_irq_restore(flags); } while (0)
+#define spin_unlock_irq(lock)                  do { spin_unlock(lock);  local_irq_enable();       } while (0)
+#define spin_unlock_bh(lock)                   do { spin_unlock(lock);  local_bh_enable();        } while (0)
+
+#define read_unlock_irqrestore(lock, flags)    do { read_unlock(lock);  local_irq_restore(flags); } while (0)
+#define read_unlock_irq(lock)                  do { read_unlock(lock);  local_irq_enable();       } while (0)
+#define read_unlock_bh(lock)                   do { read_unlock(lock);  local_bh_enable();        } while (0)
+
+#define write_unlock_irqrestore(lock, flags)   do { write_unlock(lock); local_irq_restore(flags); } while (0)
+#define write_unlock_irq(lock)                 do { write_unlock(lock); local_irq_enable();       } while (0)
+#define write_unlock_bh(lock)                  do { write_unlock(lock); local_bh_enable();        } while (0)
+#define spin_trylock_bh(lock)                  ({ int __r; local_bh_disable();\
+                                               __r = spin_trylock(lock);      \
+                                               if (!__r) local_bh_enable();   \
+                                               __r; })
+
+#ifdef CONFIG_SMP
+#include <asm/spinlock.h>
+
+#elif !defined(spin_lock_init) /* !SMP and spin_lock_init not previously
+                                  defined (e.g. by including asm/spinlock.h */
+
+#define DEBUG_SPINLOCKS        0       /* 0 == no debugging, 1 == maintain lock state, 2 == full debug */
+
+#if (DEBUG_SPINLOCKS < 1)
+
+#define atomic_dec_and_lock(atomic,lock) atomic_dec_and_test(atomic)
+#define ATOMIC_DEC_AND_LOCK
+
+/*
+ * Your basic spinlocks, allowing only a single CPU anywhere
+ *
+ * Most gcc versions have a nasty bug with empty initializers.
+ */
+#if (__GNUC__ > 2)
+  typedef struct { } spinlock_t;
+  #define SPIN_LOCK_UNLOCKED (spinlock_t) { }
+#else
+  typedef struct { int gcc_is_buggy; } spinlock_t;
+  #define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
+#endif
+
+#define spin_lock_init(lock)   do { } while(0)
+#define spin_lock(lock)                (void)(lock) /* Not "unused variable". */
+#define spin_is_locked(lock)   (0)
+#define spin_trylock(lock)     ({1; })
+#define spin_unlock_wait(lock) do { } while(0)
+#define spin_unlock(lock)      do { } while(0)
+
+#elif (DEBUG_SPINLOCKS < 2)
+
+typedef struct {
+       volatile unsigned long lock;
+} spinlock_t;
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
+
+#define spin_lock_init(x)      do { (x)->lock = 0; } while (0)
+#define spin_is_locked(lock)   (test_bit(0,(lock)))
+#define spin_trylock(lock)     (!test_and_set_bit(0,(lock)))
+
+#define spin_lock(x)           do { (x)->lock = 1; } while (0)
+#define spin_unlock_wait(x)    do { } while (0)
+#define spin_unlock(x)         do { (x)->lock = 0; } while (0)
+
+#else /* (DEBUG_SPINLOCKS >= 2) */
+
+typedef struct {
+       volatile unsigned long lock;
+       volatile unsigned int babble;
+       const char *module;
+} spinlock_t;
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0, 25, __BASE_FILE__ }
+
+/*#include <xen/kernel.h>*/
+
+#define spin_lock_init(x)      do { (x)->lock = 0; } while (0)
+#define spin_is_locked(lock)   (test_bit(0,(lock)))
+#define spin_trylock(lock)     (!test_and_set_bit(0,(lock)))
+
+#define spin_lock(x)           do {unsigned long __spinflags; save_flags(__spinflags); cli(); if ((x)->lock&&(x)->babble) {printk("%s:%d: spin_lock(%s:%p) already locked\n", __BASE_FILE__,__LINE__, (x)->module, (x));(x)->babble--;} (x)->lock = 1; restore_flags(__spinflags);} while (0)
+#define spin_unlock_wait(x)    do {unsigned long __spinflags; save_flags(__spinflags); cli(); if ((x)->lock&&(x)->babble) {printk("%s:%d: spin_unlock_wait(%s:%p) deadlock\n", __BASE_FILE__,__LINE__, (x)->module, (x));(x)->babble--;} restore_flags(__spinflags);} while (0)
+#define spin_unlock(x)         do {unsigned long __spinflags; save_flags(__spinflags); cli(); if (!(x)->lock&&(x)->babble) {printk("%s:%d: spin_unlock(%s:%p) not locked\n", __BASE_FILE__,__LINE__, (x)->module, (x));(x)->babble--;} (x)->lock = 0; restore_flags(__spinflags);} while (0)
+
+#endif /* DEBUG_SPINLOCKS */
+
+/*
+ * Read-write spinlocks, allowing multiple readers
+ * but only one writer.
+ *
+ * NOTE! it is quite common to have readers in interrupts
+ * but no interrupt writers. For those circumstances we
+ * can "mix" irq-safe locks - any writer needs to get a
+ * irq-safe write-lock, but readers can get non-irqsafe
+ * read-locks.
+ *
+ * Most gcc versions have a nasty bug with empty initializers.
+ */
+#if (__GNUC__ > 2)
+  typedef struct { } rwlock_t;
+  #define RW_LOCK_UNLOCKED (rwlock_t) { }
+#else
+  typedef struct { int gcc_is_buggy; } rwlock_t;
+  #define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
+#endif
+
+#define rwlock_init(lock)      do { } while(0)
+#define read_lock(lock)                (void)(lock) /* Not "unused variable". */
+#define read_unlock(lock)      do { } while(0)
+#define write_lock(lock)       (void)(lock) /* Not "unused variable". */
+#define write_unlock(lock)     do { } while(0)
+
+#endif /* !SMP */
+
+/* "lock on reference count zero" */
+#ifndef ATOMIC_DEC_AND_LOCK
+#include <asm/atomic.h>
+extern int atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock);
+#endif
+
+#endif /* __LINUX_SPINLOCK_H */
diff --git a/xen/include/xen/string.h b/xen/include/xen/string.h
new file mode 100644 (file)
index 0000000..df11ff8
--- /dev/null
@@ -0,0 +1,90 @@
+#ifndef _LINUX_STRING_H_
+#define _LINUX_STRING_H_
+
+/* We don't want strings.h stuff being user by user stuff by accident */
+
+#ifdef __KERNEL__
+
+#include <xen/types.h> /* for size_t */
+//#include <xen/stddef.h>      /* for NULL */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __kernel_size_t size_t
+
+extern char * ___strtok;
+extern char * strpbrk(const char *,const char *);
+extern char * strtok(char *,const char *);
+extern char * strsep(char **,const char *);
+extern __kernel_size_t strspn(const char *,const char *);
+
+
+/*
+ * Include machine specific inline routines
+ */
+#include <asm/string.h>
+
+#ifndef __HAVE_ARCH_STRCPY
+extern char * strcpy(char *,const char *);
+#endif
+#ifndef __HAVE_ARCH_STRNCPY
+extern char * strncpy(char *,const char *, __kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_STRCAT
+extern char * strcat(char *, const char *);
+#endif
+#ifndef __HAVE_ARCH_STRNCAT
+extern char * strncat(char *, const char *, __kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_STRCMP
+extern int strcmp(const char *,const char *);
+#endif
+#ifndef __HAVE_ARCH_STRNCMP
+extern int strncmp(const char *,const char *,__kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_STRNICMP
+extern int strnicmp(const char *, const char *, __kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_STRCHR
+extern char * strchr(const char *,int);
+#endif
+#ifndef __HAVE_ARCH_STRRCHR
+extern char * strrchr(const char *,int);
+#endif
+#ifndef __HAVE_ARCH_STRSTR
+extern char * strstr(const char *,const char *);
+#endif
+#ifndef __HAVE_ARCH_STRLEN
+extern __kernel_size_t strlen(const char *);
+#endif
+#ifndef __HAVE_ARCH_STRNLEN
+extern __kernel_size_t strnlen(const char *,__kernel_size_t);
+#endif
+
+#ifndef __HAVE_ARCH_MEMSET
+extern void * memset(void *,int,__kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_MEMCPY
+extern void * memcpy(void *,const void *,__kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_MEMMOVE
+extern void * memmove(void *,const void *,__kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_MEMSCAN
+extern void * memscan(void *,int,__kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_MEMCMP
+extern int memcmp(const void *,const void *,__kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_MEMCHR
+extern void * memchr(const void *,int,__kernel_size_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif /* _LINUX_STRING_H_ */
diff --git a/xen/include/xen/time.h b/xen/include/xen/time.h
new file mode 100644 (file)
index 0000000..f0fcde6
--- /dev/null
@@ -0,0 +1,70 @@
+/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
+ ****************************************************************************
+ * (C) 2002 - Rolf Neugebauer - Intel Research Cambridge
+ ****************************************************************************
+ *
+ *        File: time.h
+ *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
+ *     Changes: 
+ *              
+ *        Date: Nov 2002
+ * 
+ * Environment: Xen Hypervisor
+ * Description: This file provides a one stop shop for all time related
+ *              issues within the hypervisor. 
+ * 
+ *              The Hypervisor provides the following notions of time:
+ *              Cycle Counter Time, System Time, Wall Clock Time, and 
+ *              Domain Virtual Time.
+ *
+ ****************************************************************************
+ * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
+ ****************************************************************************
+ */
+
+
+
+#ifndef __XENO_TIME_H__
+#define __XENO_TIME_H__
+
+#include <asm/ptrace.h>  /* XXX Only used for do_timer which should be moved */
+#include <asm/time.h>    /* pull in architecture specific time definition */
+#include <xen/types.h>
+#include <hypervisor-ifs/hypervisor-if.h>
+
+/*
+ * Init time
+ */
+extern int init_xen_time();
+
+
+/*
+ * System Time
+ * 64 bit value containing the nanoseconds elapsed since boot time.
+ * This value is adjusted by frequency drift.
+ * NOW() returns the current time.
+ * The other macros are for convenience to approximate short intervals
+ * of real time into system time 
+ */
+
+s_time_t get_s_time(void);
+
+#define NOW()                          ((s_time_t)get_s_time())
+#define SECONDS(_s)                    (((s_time_t)(_s))  * 1000000000ULL )
+#define MILLISECS(_ms)         (((s_time_t)(_ms)) * 1000000ULL )
+#define MICROSECS(_us)         (((s_time_t)(_us)) * 1000ULL )
+#define Time_Max                       ((s_time_t) 0x7fffffffffffffffLL)
+#define FOREVER                                Time_Max
+
+/* Wall Clock Time */
+struct timeval {
+    long            tv_sec;         /* seconds */
+    long            tv_usec;        /* microseconds */
+};
+  
+extern void update_dom_time(shared_info_t *si);
+extern void do_settime(unsigned long secs, unsigned long usecs, 
+                       u64 system_time_base);
+extern void do_timer(struct pt_regs *regs);
+
+#endif /* __XENO_TIME_H__ */
diff --git a/xen/include/xen/timer.h b/xen/include/xen/timer.h
new file mode 100644 (file)
index 0000000..f837df6
--- /dev/null
@@ -0,0 +1,81 @@
+#ifndef _LINUX_TIMER_H
+#define _LINUX_TIMER_H
+
+#include <xen/config.h>
+#include <xen/list.h>
+
+/*
+ * In Linux 2.4, static timers have been removed from the kernel.
+ * Timers may be dynamically created and destroyed, and should be initialized
+ * by a call to init_timer() upon creation.
+ *
+ * The "data" field enables use of a common timeout function for several
+ * timeouts. You can use this field to distinguish between the different
+ * invocations.
+ *
+ * RN: Unlike the Linux timers, which are executed at the periodic timer
+ *     interrupt, in Xen, the timer list is only checked "occasionally", thus
+ *     its accuracy might be somewhat worse than under Linux. However, the
+ *     hypervisor should be purely event-driven and, in fact, in the current
+ *     implementation, timers are only used for watchdog purpose at a very
+ *     coarse granularity anyway. Thus this is not a problem.
+ */
+struct timer_list {
+       struct list_head list;
+       unsigned long expires;          /* jiffies */
+       unsigned long data;
+       void (*function)(unsigned long);
+};
+
+extern void add_timer(struct timer_list * timer);
+extern int del_timer(struct timer_list * timer);
+
+#ifdef CONFIG_SMP
+extern int del_timer_sync(struct timer_list * timer);
+extern void sync_timers(void);
+#else
+#define del_timer_sync(t)      del_timer(t)
+#define sync_timers()          do { } while (0)
+#endif
+
+/*
+ * mod_timer is a more efficient way to update the expire field of an
+ * active timer (if the timer is inactive it will be activated)
+ * mod_timer(a,b) is equivalent to del_timer(a); a->expires = b; add_timer(a).
+ * If the timer is known to be not pending (ie, in the handler), mod_timer
+ * is less efficient than a->expires = b; add_timer(a).
+ */
+int mod_timer(struct timer_list *timer, unsigned long expires);
+
+extern void it_real_fn(unsigned long);
+
+static inline void init_timer(struct timer_list * timer)
+{
+       timer->list.next = timer->list.prev = NULL;
+}
+
+static inline int timer_pending (const struct timer_list * timer)
+{
+       return timer->list.next != NULL;
+}
+
+/*
+ *     These inlines deal with timer wrapping correctly. You are 
+ *     strongly encouraged to use them
+ *     1. Because people otherwise forget
+ *     2. Because if the timer wrap changes in future you wont have to
+ *        alter your driver code.
+ *
+ * time_after(a,b) returns true if the time a is after time b.
+ *
+ * Do this with "<0" and ">=0" to only test the sign of the result. A
+ * good compiler would generate better code (and a really good compiler
+ * wouldn't care). Gcc is currently neither.
+ */
+#define time_after(a,b)                ((long)(b) - (long)(a) < 0)
+#define time_before(a,b)       time_after(b,a)
+
+#define time_after_eq(a,b)     ((long)(a) - (long)(b) >= 0)
+#define time_before_eq(a,b)    time_after_eq(b,a)
+
+#endif
diff --git a/xen/include/xen/timex.h b/xen/include/xen/timex.h
new file mode 100644 (file)
index 0000000..3a00a26
--- /dev/null
@@ -0,0 +1,291 @@
+/*****************************************************************************
+ *                                                                           *
+ * Copyright (c) David L. Mills 1993                                         *
+ *                                                                           *
+ * Permission to use, copy, modify, and distribute this software and its     *
+ * documentation for any purpose and without fee is hereby granted, provided *
+ * that the above copyright notice appears in all copies and that both the   *
+ * copyright notice and this permission notice appear in supporting          *
+ * documentation, and that the name University of Delaware not be used in    *
+ * advertising or publicity pertaining to distribution of the software       *
+ * without specific, written prior permission.  The University of Delaware   *
+ * makes no representations about the suitability this software for any      *
+ * purpose.  It is provided "as is" without express or implied warranty.     *
+ *                                                                           *
+ *****************************************************************************/
+
+/*
+ * Modification history timex.h
+ *
+ * 29 Dec 97   Russell King
+ *     Moved CLOCK_TICK_RATE, CLOCK_TICK_FACTOR and FINETUNE to asm/timex.h
+ *     for ARM machines
+ *
+ *  9 Jan 97    Adrian Sun
+ *      Shifted LATCH define to allow access to alpha machines.
+ *
+ * 26 Sep 94   David L. Mills
+ *     Added defines for hybrid phase/frequency-lock loop.
+ *
+ * 19 Mar 94   David L. Mills
+ *     Moved defines from kernel routines to header file and added new
+ *     defines for PPS phase-lock loop.
+ *
+ * 20 Feb 94   David L. Mills
+ *     Revised status codes and structures for external clock and PPS
+ *     signal discipline.
+ *
+ * 28 Nov 93   David L. Mills
+ *     Adjusted parameters to improve stability and increase poll
+ *     interval.
+ *
+ * 17 Sep 93    David L. Mills
+ *      Created file $NTP/include/sys/timex.h
+ * 07 Oct 93    Torsten Duwe
+ *      Derived linux/timex.h
+ * 1995-08-13    Torsten Duwe
+ *      kernel PLL updated to 1994-12-13 specs (rfc-1589)
+ * 1997-08-30    Ulrich Windl
+ *      Added new constant NTP_PHASE_LIMIT
+ */
+#ifndef _LINUX_TIMEX_H
+#define _LINUX_TIMEX_H
+
+#include <asm/param.h>
+
+/*
+ * The following defines establish the engineering parameters of the PLL
+ * model. The HZ variable establishes the timer interrupt frequency, 100 Hz
+ * for the SunOS kernel, 256 Hz for the Ultrix kernel and 1024 Hz for the
+ * OSF/1 kernel. The SHIFT_HZ define expresses the same value as the
+ * nearest power of two in order to avoid hardware multiply operations.
+ */
+#if HZ >= 12 && HZ < 24
+# define SHIFT_HZ      4
+#elif HZ >= 24 && HZ < 48
+# define SHIFT_HZ      5
+#elif HZ >= 48 && HZ < 96
+# define SHIFT_HZ      6
+#elif HZ >= 96 && HZ < 192
+# define SHIFT_HZ      7
+#elif HZ >= 192 && HZ < 384
+# define SHIFT_HZ      8
+#elif HZ >= 384 && HZ < 768
+# define SHIFT_HZ      9
+#elif HZ >= 768 && HZ < 1536
+# define SHIFT_HZ      10
+#else
+# error You lose.
+#endif
+
+/*
+ * SHIFT_KG and SHIFT_KF establish the damping of the PLL and are chosen
+ * for a slightly underdamped convergence characteristic. SHIFT_KH
+ * establishes the damping of the FLL and is chosen by wisdom and black
+ * art.
+ *
+ * MAXTC establishes the maximum time constant of the PLL. With the
+ * SHIFT_KG and SHIFT_KF values given and a time constant range from
+ * zero to MAXTC, the PLL will converge in 15 minutes to 16 hours,
+ * respectively.
+ */
+#define SHIFT_KG 6             /* phase factor (shift) */
+#define SHIFT_KF 16            /* PLL frequency factor (shift) */
+#define SHIFT_KH 2             /* FLL frequency factor (shift) */
+#define MAXTC 6                        /* maximum time constant (shift) */
+
+/*
+ * The SHIFT_SCALE define establishes the decimal point of the time_phase
+ * variable which serves as an extension to the low-order bits of the
+ * system clock variable. The SHIFT_UPDATE define establishes the decimal
+ * point of the time_offset variable which represents the current offset
+ * with respect to standard time. The FINEUSEC define represents 1 usec in
+ * scaled units.
+ *
+ * SHIFT_USEC defines the scaling (shift) of the time_freq and
+ * time_tolerance variables, which represent the current frequency
+ * offset and maximum frequency tolerance.
+ *
+ * FINEUSEC is 1 us in SHIFT_UPDATE units of the time_phase variable.
+ */
+#define SHIFT_SCALE 22         /* phase scale (shift) */
+#define SHIFT_UPDATE (SHIFT_KG + MAXTC) /* time offset scale (shift) */
+#define SHIFT_USEC 16          /* frequency offset scale (shift) */
+#define FINEUSEC (1L << SHIFT_SCALE) /* 1 us in phase units */
+
+#define MAXPHASE 512000L        /* max phase error (us) */
+#define MAXFREQ (512L << SHIFT_USEC)  /* max frequency error (ppm) */
+#define MAXTIME (200L << PPS_AVG) /* max PPS error (jitter) (200 us) */
+#define MINSEC 16L              /* min interval between updates (s) */
+#define MAXSEC 1200L            /* max interval between updates (s) */
+#define        NTP_PHASE_LIMIT (MAXPHASE << 5) /* beyond max. dispersion */
+
+/*
+ * The following defines are used only if a pulse-per-second (PPS)
+ * signal is available and connected via a modem control lead, such as
+ * produced by the optional ppsclock feature incorporated in the Sun
+ * asynch driver. They establish the design parameters of the frequency-
+ * lock loop used to discipline the CPU clock oscillator to the PPS
+ * signal.
+ *
+ * PPS_AVG is the averaging factor for the frequency loop, as well as
+ * the time and frequency dispersion.
+ *
+ * PPS_SHIFT and PPS_SHIFTMAX specify the minimum and maximum
+ * calibration intervals, respectively, in seconds as a power of two.
+ *
+ * PPS_VALID is the maximum interval before the PPS signal is considered
+ * invalid and protocol updates used directly instead.
+ *
+ * MAXGLITCH is the maximum interval before a time offset of more than
+ * MAXTIME is believed.
+ */
+#define PPS_AVG 2              /* pps averaging constant (shift) */
+#define PPS_SHIFT 2            /* min interval duration (s) (shift) */
+#define PPS_SHIFTMAX 8         /* max interval duration (s) (shift) */
+#define PPS_VALID 120          /* pps signal watchdog max (s) */
+#define MAXGLITCH 30           /* pps signal glitch max (s) */
+
+/*
+ * Pick up the architecture specific timex specifications
+ */
+#include <asm/timex.h>
+
+/* LATCH is used in the interval timer and ftape setup. */
+#define LATCH  ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */
+
+/*
+ * syscall interface - used (mainly by NTP daemon)
+ * to discipline kernel clock oscillator
+ */
+struct timex {
+       unsigned int modes;     /* mode selector */
+       long offset;            /* time offset (usec) */
+       long freq;              /* frequency offset (scaled ppm) */
+       long maxerror;          /* maximum error (usec) */
+       long esterror;          /* estimated error (usec) */
+       int status;             /* clock command/status */
+       long constant;          /* pll time constant */
+       long precision;         /* clock precision (usec) (read only) */
+       long tolerance;         /* clock frequency tolerance (ppm)
+                                * (read only)
+                                */
+       struct timeval time;    /* (read only) */
+       long tick;              /* (modified) usecs between clock ticks */
+
+       long ppsfreq;           /* pps frequency (scaled ppm) (ro) */
+       long jitter;            /* pps jitter (us) (ro) */
+       int shift;              /* interval duration (s) (shift) (ro) */
+       long stabil;            /* pps stability (scaled ppm) (ro) */
+       long jitcnt;            /* jitter limit exceeded (ro) */
+       long calcnt;            /* calibration intervals (ro) */
+       long errcnt;            /* calibration errors (ro) */
+       long stbcnt;            /* stability limit exceeded (ro) */
+
+       int  :32; int  :32; int  :32; int  :32;
+       int  :32; int  :32; int  :32; int  :32;
+       int  :32; int  :32; int  :32; int  :32;
+};
+
+/*
+ * Mode codes (timex.mode)
+ */
+#define ADJ_OFFSET             0x0001  /* time offset */
+#define ADJ_FREQUENCY          0x0002  /* frequency offset */
+#define ADJ_MAXERROR           0x0004  /* maximum time error */
+#define ADJ_ESTERROR           0x0008  /* estimated time error */
+#define ADJ_STATUS             0x0010  /* clock status */
+#define ADJ_TIMECONST          0x0020  /* pll time constant */
+#define ADJ_TICK               0x4000  /* tick value */
+#define ADJ_OFFSET_SINGLESHOT  0x8001  /* old-fashioned adjtime */
+
+/* xntp 3.4 compatibility names */
+#define MOD_OFFSET     ADJ_OFFSET
+#define MOD_FREQUENCY  ADJ_FREQUENCY
+#define MOD_MAXERROR   ADJ_MAXERROR
+#define MOD_ESTERROR   ADJ_ESTERROR
+#define MOD_STATUS     ADJ_STATUS
+#define MOD_TIMECONST  ADJ_TIMECONST
+#define MOD_CLKB       ADJ_TICK
+#define MOD_CLKA       ADJ_OFFSET_SINGLESHOT /* 0x8000 in original */
+
+
+/*
+ * Status codes (timex.status)
+ */
+#define STA_PLL                0x0001  /* enable PLL updates (rw) */
+#define STA_PPSFREQ    0x0002  /* enable PPS freq discipline (rw) */
+#define STA_PPSTIME    0x0004  /* enable PPS time discipline (rw) */
+#define STA_FLL                0x0008  /* select frequency-lock mode (rw) */
+
+#define STA_INS                0x0010  /* insert leap (rw) */
+#define STA_DEL                0x0020  /* delete leap (rw) */
+#define STA_UNSYNC     0x0040  /* clock unsynchronized (rw) */
+#define STA_FREQHOLD   0x0080  /* hold frequency (rw) */
+
+#define STA_PPSSIGNAL  0x0100  /* PPS signal present (ro) */
+#define STA_PPSJITTER  0x0200  /* PPS signal jitter exceeded (ro) */
+#define STA_PPSWANDER  0x0400  /* PPS signal wander exceeded (ro) */
+#define STA_PPSERROR   0x0800  /* PPS signal calibration error (ro) */
+
+#define STA_CLOCKERR   0x1000  /* clock hardware fault (ro) */
+
+#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
+    STA_PPSERROR | STA_CLOCKERR) /* read-only bits */
+
+/*
+ * Clock states (time_state)
+ */
+#define TIME_OK                0       /* clock synchronized, no leap second */
+#define TIME_INS       1       /* insert leap second */
+#define TIME_DEL       2       /* delete leap second */
+#define TIME_OOP       3       /* leap second in progress */
+#define TIME_WAIT      4       /* leap second has occurred */
+#define TIME_ERROR     5       /* clock not synchronized */
+#define TIME_BAD       TIME_ERROR /* bw compat */
+
+#ifdef __KERNEL__
+/*
+ * kernel variables
+ * Note: maximum error = NTP synch distance = dispersion + delay / 2;
+ * estimated error = NTP dispersion.
+ */
+extern long tick;                      /* timer interrupt period */
+extern int tickadj;                    /* amount of adjustment per tick */
+
+/*
+ * phase-lock loop variables
+ */
+extern int time_state;         /* clock status */
+extern int time_status;                /* clock synchronization status bits */
+extern long time_offset;       /* time adjustment (us) */
+extern long time_constant;     /* pll time constant */
+extern long time_tolerance;    /* frequency tolerance (ppm) */
+extern long time_precision;    /* clock precision (us) */
+extern long time_maxerror;     /* maximum error */
+extern long time_esterror;     /* estimated error */
+
+extern long time_phase;                /* phase offset (scaled us) */
+extern long time_freq;         /* frequency offset (scaled ppm) */
+extern long time_adj;          /* tick adjust (scaled 1 / HZ) */
+extern long time_reftime;      /* time at last adjustment (s) */
+
+extern long time_adjust;       /* The amount of adjtime left */
+
+/* interface variables pps->timer interrupt */
+extern long pps_offset;                /* pps time offset (us) */
+extern long pps_jitter;                /* time dispersion (jitter) (us) */
+extern long pps_freq;          /* frequency offset (scaled ppm) */
+extern long pps_stabil;                /* frequency dispersion (scaled ppm) */
+extern long pps_valid;         /* pps signal watchdog counter */
+
+/* interface variables pps->adjtimex */
+extern int pps_shift;          /* interval duration (s) (shift) */
+extern long pps_jitcnt;                /* jitter limit exceeded */
+extern long pps_calcnt;                /* calibration intervals */
+extern long pps_errcnt;                /* calibration errors */
+extern long pps_stbcnt;                /* stability limit exceeded */
+
+#endif /* KERNEL */
+
+#endif /* LINUX_TIMEX_H */
diff --git a/xen/include/xen/tqueue.h b/xen/include/xen/tqueue.h
new file mode 100644 (file)
index 0000000..81dba49
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * tqueue.h --- task queue handling for Linux.
+ *
+ * Mostly based on a proposed bottom-half replacement code written by
+ * Kai Petzke, wpp@marie.physik.tu-berlin.de.
+ *
+ * Modified for use in the Linux kernel by Theodore Ts'o,
+ * tytso@mit.edu.  Any bugs are my fault, not Kai's.
+ *
+ * The original comment follows below.
+ */
+
+#ifndef _LINUX_TQUEUE_H
+#define _LINUX_TQUEUE_H
+
+#include <xen/spinlock.h>
+#include <xen/list.h>
+#include <asm/bitops.h>
+#include <asm/system.h>
+
+/*
+ * New proposed "bottom half" handlers:
+ * (C) 1994 Kai Petzke, wpp@marie.physik.tu-berlin.de
+ *
+ * Advantages:
+ * - Bottom halfs are implemented as a linked list.  You can have as many
+ *   of them, as you want.
+ * - No more scanning of a bit field is required upon call of a bottom half.
+ * - Support for chained bottom half lists.  The run_task_queue() function can be
+ *   used as a bottom half handler.  This is for example useful for bottom
+ *   halfs, which want to be delayed until the next clock tick.
+ *
+ * Notes:
+ * - Bottom halfs are called in the reverse order that they were linked into
+ *   the list.
+ */
+
+struct tq_struct {
+       struct list_head list;          /* linked list of active bh's */
+       unsigned long sync;             /* must be initialized to zero */
+       void (*routine)(void *);        /* function to call */
+       void *data;                     /* argument to function */
+};
+
+/*
+ * Emit code to initialise a tq_struct's routine and data pointers
+ */
+#define PREPARE_TQUEUE(_tq, _routine, _data)                   \
+       do {                                                    \
+               (_tq)->routine = _routine;                      \
+               (_tq)->data = _data;                            \
+       } while (0)
+
+/*
+ * Emit code to initialise all of a tq_struct
+ */
+#define INIT_TQUEUE(_tq, _routine, _data)                      \
+       do {                                                    \
+               INIT_LIST_HEAD(&(_tq)->list);                   \
+               (_tq)->sync = 0;                                \
+               PREPARE_TQUEUE((_tq), (_routine), (_data));     \
+       } while (0)
+
+typedef struct list_head task_queue;
+
+#define DECLARE_TASK_QUEUE(q)  LIST_HEAD(q)
+#define TQ_ACTIVE(q)           (!list_empty(&q))
+
+extern task_queue tq_disk;
+
+/*
+ * To implement your own list of active bottom halfs, use the following
+ * two definitions:
+ *
+ * DECLARE_TASK_QUEUE(my_tqueue);
+ * struct tq_struct my_task = {
+ *     routine: (void (*)(void *)) my_routine,
+ *     data: &my_data
+ * };
+ *
+ * To activate a bottom half on a list, use:
+ *
+ *     queue_task(&my_task, &my_tqueue);
+ *
+ * To later run the queued tasks use
+ *
+ *     run_task_queue(&my_tqueue);
+ *
+ * This allows you to do deferred processing.  For example, you could
+ * have a task queue called tq_timer, which is executed within the timer
+ * interrupt.
+ */
+
+extern spinlock_t tqueue_lock;
+
+/*
+ * Queue a task on a tq.  Return non-zero if it was successfully
+ * added.
+ */
+static inline int queue_task(struct tq_struct *bh_pointer, task_queue *bh_list)
+{
+       int ret = 0;
+       if (!test_and_set_bit(0,&bh_pointer->sync)) {
+               unsigned long flags;
+               spin_lock_irqsave(&tqueue_lock, flags);
+               list_add_tail(&bh_pointer->list, bh_list);
+               spin_unlock_irqrestore(&tqueue_lock, flags);
+               ret = 1;
+       }
+       return ret;
+}
+
+/*
+ * Call all "bottom halfs" on a given list.
+ */
+
+extern void __run_task_queue(task_queue *list);
+
+static inline void run_task_queue(task_queue *list)
+{
+       if (TQ_ACTIVE(*list))
+               __run_task_queue(list);
+}
+
+#endif /* _LINUX_TQUEUE_H */
diff --git a/xen/include/xen/trace.h b/xen/include/xen/trace.h
new file mode 100644 (file)
index 0000000..187da22
--- /dev/null
@@ -0,0 +1,125 @@
+/******************************************************************************
+ * include/xen/trace.h
+ *
+ * Xen Trace Buffer
+ *
+ * Copyright (C) 2003 by Intel Research Cambridge
+ *
+ * Author: Mark Williamson, mark.a.williamson@intel.com
+ * Date:   January 2004
+ *
+ * The trace buffer code is designed to allow debugging traces of Xen to be
+ * generated on UP / SMP machines.  Each trace entry is timestamped so that
+ * it's possible to reconstruct a chronological record of trace events.
+ *
+ * Access to the trace buffers is via a dom0 hypervisor op and analysis of
+ * trace buffer contents can then be performed using a userland tool.
+ *
+ * See also common/trace.c and the dom0 op in include/hypervisor-ifs/dom0_ops.h
+ */
+
+#ifndef __XENO_TRACE_H__
+#define __XENO_TRACE_H__
+
+#include <hypervisor-ifs/trace.h>
+
+#ifdef TRACE_BUFFER
+
+#include <xen/spinlock.h>
+#include <asm/page.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <asm/atomic.h>
+#include <asm/current.h>
+#include <asm/msr.h>
+#include <hypervisor-ifs/dom0_ops.h>
+
+/* Used to initialise trace buffer functionality */
+void init_trace_bufs(void);
+
+/* used to retrieve the physical address of the trace buffers */
+int get_tb_info(dom0_gettbufs_t *st);
+
+/**
+ * trace - Enters a trace tuple into the trace buffer for the current CPU.
+ * @event: the event type being logged
+ * @d1...d5: the data items for the event being logged
+ *
+ * Logs a trace record into the appropriate buffer.  Returns nonzero on
+ * failure, otherwise 0.  Failure occurs only if the trace buffers are not yet
+ * initialised.
+ */
+static inline int trace(u32 event, u32 d1, u32 d2, u32 d3, u32 d4, u32 d5)
+{
+    extern struct t_buf *t_bufs[];      /* global array of pointers to bufs */
+    extern int tb_init_done;            /* set when buffers are initialised */
+    unsigned long flags;                /* for saving interrupt flags       */
+    struct t_buf *buf;                  /* the buffer we're working on      */
+    struct t_rec *rec;                  /* next record to fill out          */
+
+
+    if ( !tb_init_done )
+        return -1;
+
+    buf = t_bufs[smp_processor_id()];
+    rec = buf->head_ptr;
+
+    spin_lock_irqsave(&buf->lock, flags);
+
+    rdtscll(rec->cycles);
+    rec->event = event;
+    rec->d1 = d1;
+    rec->d2 = d2;
+    rec->d3 = d3;
+    rec->d4 = d4;
+    rec->d5 = d5;
+
+    wmb(); /* above must be visible before reader sees index updated */
+
+    if ( likely(buf->head_ptr < (buf->vdata + buf->size - 1)) )
+    {
+        buf->head_ptr++;
+        buf->head++;
+    }
+    else
+    {
+        buf->head = 0;
+        buf->head_ptr = buf->vdata;
+    }
+
+    spin_unlock_irqrestore(&buf->lock, flags);
+    
+    return 0;
+}
+
+/* Avoids troubling the caller with casting their arguments to a trace macro */
+#define trace_do_casts(e,d1,d2,d3,d4,d5)  \
+                 trace(e,                 \
+                       (unsigned long)d1, \
+                       (unsigned long)d2, \
+                       (unsigned long)d3, \
+                       (unsigned long)d4, \
+                       (unsigned long)d5)
+
+/* Convenience macros for calling the trace function. */
+#define TRACE_0D(event)                trace_do_casts(event,0, 0, 0, 0, 0 )
+#define TRACE_1D(event,d)              trace_do_casts(event,d, 0, 0, 0, 0 )
+#define TRACE_2D(event,d1,d2)          trace_do_casts(event,d1,d2,0, 0, 0 )
+#define TRACE_3D(event,d1,d2,d3)       trace_do_casts(event,d1,d2,d3,0, 0 )
+#define TRACE_4D(event,d1,d2,d3,d4)    trace_do_casts(event,d1,d2,d3,d4,0 )
+#define TRACE_5D(event,d1,d2,d3,d4,d5) trace_do_casts(event,d1,d2,d3,d4,d5)
+
+#else
+
+#define init_trace_bufs() ((void)0)
+
+#define TRACE_0D(event)                ((void)0)
+#define TRACE_1D(event,d)              ((void)0)
+#define TRACE_2D(event,d1,d2)          ((void)0)
+#define TRACE_3D(event,d1,d2,d3)       ((void)0)
+#define TRACE_4D(event,d1,d2,d3,d4)    ((void)0)
+#define TRACE_5D(event,d1,d2,d3,d4,d5) ((void)0)
+
+#endif /* TRACE_BUFFER */
+
+#endif /* __XENO_TRACE_H__ */
diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h
new file mode 100644 (file)
index 0000000..0299f74
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef __TYPES_H__
+#define __TYPES_H__
+
+#include <asm/types.h>
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+#define INT_MAX         ((int)(~0U>>1))
+#define INT_MIN         (-INT_MAX - 1)
+#define UINT_MAX        (~0U)
+#define LONG_MAX        ((long)(~0UL>>1))
+#define LONG_MIN        (-LONG_MAX - 1)
+#define ULONG_MAX       (~0UL)
+
+/* bsd */
+typedef unsigned char           u_char;
+typedef unsigned short          u_short;
+typedef unsigned int            u_int;
+typedef unsigned long           u_long;
+
+/* sysv */
+typedef unsigned char           unchar;
+typedef unsigned short          ushort;
+typedef unsigned int            uint;
+typedef unsigned long           ulong;
+
+#ifndef __BIT_TYPES_DEFINED__
+#define __BIT_TYPES_DEFINED__
+
+typedef         __u8            u_int8_t;
+typedef         __s8            int8_t;
+typedef         __u16           u_int16_t;
+typedef         __s16           int16_t;
+typedef         __u32           u_int32_t;
+typedef         __s32           int32_t;
+
+#endif /* !(__BIT_TYPES_DEFINED__) */
+
+typedef         __u8            uint8_t;
+typedef         __u16           uint16_t;
+typedef         __u32           uint32_t;
+typedef         __u64           uint64_t;
+
+
+
+#endif /* __TYPES_H__ */
diff --git a/xen/include/xen/vbd.h b/xen/include/xen/vbd.h
new file mode 100644 (file)
index 0000000..1c05653
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+** include/xen/vbd.h: 
+** -- xen internal declarations + prototypes for virtual block devices
+*/
+
+#ifndef __VBD_H__
+#define __VBD_H__
+
+#include <hypervisor-ifs/block.h>
+#include <hypervisor-ifs/vbd.h>
+
+#include <xen/rbtree.h>
+
+/* An entry in a list of xen_extents. */
+typedef struct _xen_extent_le { 
+    xen_extent_t extent;               /* an individual extent */
+    struct _xen_extent_le *next;       /* and a pointer to the next */ 
+} xen_extent_le_t; 
+
+/*
+ * This is what a vbd looks like from the p.o.v. of xen: essentially a list of
+ * xen_extents which a given domain refers to by a particular 16bit id. Each
+ * domain has a lookup structure to map from these to the relevant VBD.
+ */
+typedef struct _vbd { 
+    unsigned short    vdevice;   /* what the domain refers to this vbd as */
+    unsigned char     mode;      /* VBD_MODE_{R,W} */
+    unsigned char     type;      /* XD_TYPE_xxx */
+    xen_extent_le_t  *extents;   /* list of xen_extents making up this vbd */
+    rb_node_t         rb;        /* for linking into R-B tree lookup struct */
+} vbd_t; 
+
+/*
+ * Internal forms of 'vbd_create' and 'vbd_grow. Used when setting up real 
+ * physical device access for domain 0.
+ */
+long __vbd_create(struct task_struct *p,
+                  unsigned short vdevice,
+                  unsigned char mode,
+                  unsigned char type);
+long __vbd_grow(struct task_struct *p,
+                unsigned short vdevice,
+                xen_extent_t *extent);
+
+/* This is the main API, accessible from guest OSes. */
+long vbd_create(vbd_create_t *create_params); 
+long vbd_grow(vbd_grow_t *grow_params); 
+long vbd_shrink(vbd_shrink_t *shrink_params);
+long vbd_setextents(vbd_setextents_t *setextents_params);
+long vbd_delete(vbd_delete_t *delete_params); 
+long vbd_probe(vbd_probe_t *probe_params); 
+long vbd_info(vbd_info_t *info_params); 
+
+void destroy_all_vbds(struct task_struct *p);
+
+/* Describes a [partial] disk extent (part of a block io request) */
+typedef struct {
+    unsigned short dev;
+    unsigned short nr_sects;
+    unsigned long  buffer;
+    xen_sector_t   sector_number;
+} phys_seg_t;
+
+
+int vbd_translate(phys_seg_t *pseg, struct task_struct *p, int operation); 
+
+#endif /* __VBD_H__ */
diff --git a/xen/include/xen/version.h b/xen/include/xen/version.h
new file mode 100644 (file)
index 0000000..a0bbfa9
--- /dev/null
@@ -0,0 +1,2 @@
+#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
+#define LINUX_VERSION_CODE KERNEL_VERSION(2,4,21)
diff --git a/xen/include/xen/vif.h b/xen/include/xen/vif.h
new file mode 100644 (file)
index 0000000..41d6062
--- /dev/null
@@ -0,0 +1,116 @@
+/* vif.h
+ * 
+ * This is the hypervisor end of the network code.  The net_ring structure
+ * stored in each vif is placed on a shared page to interact with the guest VM.
+ *
+ * Copyright (c) 2002-2003, A K Warfield and K A Fraser
+ */
+
+#ifndef __XENO_VIF_H__
+#define __XENO_VIF_H__
+
+/* virtual network interface struct and associated defines. */
+/* net_vif_st is the larger struct that describes a virtual network interface
+ * it contains a pointer to the net_ring_t structure that needs to be on a 
+ * shared page between the hypervisor and guest.  The vif struct is private 
+ * to the hypervisor and is used primarily as a container to allow routing 
+ * and interface administration.  This define should eventually be moved to 
+ * a non-shared interface file, as it is of no relevance to the guest.
+ */
+
+#include <hypervisor-ifs/network.h>
+
+#include <xen/if_ether.h>
+
+extern struct net_device *the_dev;
+
+/*
+ * shadow ring structures are used to protect the descriptors from tampering 
+ * after they have been passed to the hypervisor.
+ * 
+ * XENNET_TX_RING_SIZE and XENNET_RX_RING_SIZE are defined in the shared
+ * network.h. 
+ */
+
+typedef struct rx_shadow_entry_st 
+{
+    unsigned short id;
+    unsigned short _pad;
+    unsigned long  pte_ptr;
+    unsigned long  buf_pfn;
+} rx_shadow_entry_t;
+
+typedef struct tx_shadow_entry_st 
+{
+    unsigned short id;
+    unsigned short size;
+    void          *header;
+    unsigned long  payload;
+} tx_shadow_entry_t;
+
+typedef struct net_vif_st {
+    /* The shared rings and indexes. */
+    net_ring_t         *shared_rings;
+    net_idx_t          *shared_idxs;
+
+    /* The private rings and indexes. */
+    rx_shadow_entry_t rx_shadow_ring[XENNET_RX_RING_SIZE];
+    NET_RING_IDX rx_prod;  /* More buffers for filling go here. */
+    NET_RING_IDX rx_cons;  /* Next buffer to fill is here. */
+    tx_shadow_entry_t tx_shadow_ring[XENNET_TX_RING_SIZE];
+    NET_RING_IDX tx_prod;  /* More packets for sending go here. */
+    NET_RING_IDX tx_cons;  /* Next packet to send is here. */
+
+    /* Private indexes into shared ring. */
+    NET_RING_IDX rx_req_cons;
+    NET_RING_IDX rx_resp_prod; /* private version of shared variable */
+    NET_RING_IDX tx_req_cons;
+    NET_RING_IDX tx_resp_prod; /* private version of shared variable */
+
+    /* Usage accounting */
+    long long total_bytes_sent;
+    long long total_bytes_received;
+    long long total_packets_sent;
+    long long total_packets_received;
+
+    /* Trasnmit shaping: allow 'credit_bytes' everu 'credit_usec'. */
+    unsigned long   credit_bytes;
+    unsigned long   credit_usec;
+    unsigned long   remaining_credit;
+    struct ac_timer credit_timeout;
+
+    /* Miscellaneous private stuff. */
+    struct task_struct *domain;
+    unsigned int idx; /* index within domain */
+    struct list_head    list;     /* scheduling list */
+    atomic_t            refcnt;
+    spinlock_t          rx_lock, tx_lock;
+    unsigned char       vmac[ETH_ALEN];
+} net_vif_t;
+
+#define get_vif(_v) (atomic_inc(&(_v)->refcnt))
+#define put_vif(_v)                                                \
+do {                                                               \
+    if ( atomic_dec_and_test(&(_v)->refcnt) ) destroy_net_vif(_v); \
+} while (0)                                                        \
+
+/* vif prototypes */
+net_vif_t *create_net_vif(domid_t dom);
+void destroy_net_vif(net_vif_t *vif);
+void unlink_net_vif(net_vif_t *vif);
+net_vif_t *net_get_target_vif(u8 *data, unsigned int len, net_vif_t *src_vif);
+net_vif_t *find_net_vif(domid_t dom, unsigned int idx);
+void delete_all_domain_vfr_rules(struct task_struct *p);
+
+/*
+ * Return values from net_get_target_vif:
+ *  VIF_PHYS -- Send to physical NIC
+ *  VIF_DROP -- Drop this packet
+ *  others   -- Send to specified VIF (reference held on return)
+ */
+#define VIF_PHYS  ((net_vif_t *)0)
+#define VIF_DROP  ((net_vif_t *)1)
+#define VIF_LOCAL(_vif) ((unsigned long)(_vif) > 1)
+
+#endif /* __XENO_VIF_H__ */
+
diff --git a/xen/include/xeno/ac_timer.h b/xen/include/xeno/ac_timer.h
deleted file mode 100644 (file)
index 3689662..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
- ****************************************************************************
- * (C) 2002 - Rolf Neugebauer - Intel Research Cambridge
- ****************************************************************************
- *
- *        File: ac_timer.h
- *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
- *     Changes: 
- *              
- *        Date: Nov 2002
- * 
- * Environment: Xen Hypervisor
- * Description: Accurate timer for the Hypervisor
- * 
- ****************************************************************************
- * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
- ****************************************************************************
- */
-
-#ifndef _AC_TIMER_H_
-#define _AC_TIMER_H_
-
-#include <xeno/time.h>
-
-struct ac_timer {
-    /*
-     * PUBLIC FIELDS
-     */
-    /* System time expiry value (nanoseconds since boot). */
-    s_time_t         expires;
-    /* CPU on which this timer will be installed and executed. */
-    unsigned int     cpu;
-    /* On expiry, '(*function)(data)' will be executed in softirq context. */
-    unsigned long    data;
-    void             (*function)(unsigned long);
-
-    /*
-     * PRIVATE FIELDS
-     */
-    unsigned int     heap_offset;
-};
-
-/*
- * This function can be called for any CPU from any CPU in any context.
- * It initialises the private fields of the ac_timer structure.
- */
-static __inline__ void init_ac_timer(struct ac_timer *timer)
-{
-    timer->heap_offset = 0;
-}
-
-/*
- * This function can be called for any CPU from any CPU in any context.
- * It returns TRUE if the given timer is on a timer list.
- */
-static __inline__ int active_ac_timer(struct ac_timer *timer)
-{
-    return (timer->heap_offset != 0);
-}
-
-/*
- * This function can be called for any CPU from any CPU in any context, BUT:
- *  -- The private fields must have been initialised (ac_timer_init).
- *  -- All public fields must be initialised.
- *  -- The timer must not currently be on a timer list.
- */
-extern void add_ac_timer(struct ac_timer *timer);
-
-/*
- * This function can be called for any CPU from any CPU in any context, BUT:
- *  -- The private fields must have been initialised (ac_timer_init).
- *  -- All public fields must be initialised.
- *  -- The timer must currently be on a timer list.
- */
-extern void rem_ac_timer(struct ac_timer *timer);
-
-/*
- * This function can be called for any CPU from any CPU in any context, BUT:
- *  -- The private fields must have been initialised (ac_timer_init).
- *  -- All public fields must be initialised.
- */
-extern void mod_ac_timer(struct ac_timer *timer, s_time_t new_time);
-
-
-/*
- * PRIVATE DEFINITIONS
- */
-
-extern int reprogram_ac_timer(s_time_t timeout);
-
-#endif /* _AC_TIMER_H_ */
diff --git a/xen/include/xeno/blk.h b/xen/include/xeno/blk.h
deleted file mode 100644 (file)
index bc3f554..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-#ifndef _BLK_H
-#define _BLK_H
-
-#include <xeno/blkdev.h>
-/*#include <xeno/locks.h>*/
-#include <xeno/config.h>
-#include <xeno/spinlock.h>
-
-/*
- * Spinlock for protecting the request queue which
- * is mucked around with in interrupts on potentially
- * multiple CPU's..
- */
-extern spinlock_t io_request_lock;
-
-/*
- * Initialization functions.
- */
-extern int isp16_init(void);
-extern int cdu31a_init(void);
-extern int acsi_init(void);
-extern int mcd_init(void);
-extern int mcdx_init(void);
-extern int sbpcd_init(void);
-extern int aztcd_init(void);
-extern int sony535_init(void);
-extern int gscd_init(void);
-extern int cm206_init(void);
-extern int optcd_init(void);
-extern int sjcd_init(void);
-extern int cdi_init(void);
-extern int hd_init(void);
-extern int ide_init(void);
-extern int xd_init(void);
-extern int mfm_init(void);
-extern int loop_init(void);
-extern int md_init(void);
-extern int ap_init(void);
-extern int ddv_init(void);
-extern int z2_init(void);
-extern int swim3_init(void);
-extern int swimiop_init(void);
-extern int amiga_floppy_init(void);
-extern int atari_floppy_init(void);
-extern int ez_init(void);
-extern int bpcd_init(void);
-extern int ps2esdi_init(void);
-extern int jsfd_init(void);
-extern int viodasd_init(void);
-extern int viocd_init(void);
-
-#if defined(CONFIG_ARCH_S390)
-extern int dasd_init(void);
-extern int xpram_init(void);
-extern int tapeblock_init(void);
-#endif /* CONFIG_ARCH_S390 */
-
-extern void set_device_ro(kdev_t dev,int flag);
-#if 0
-void add_blkdev_randomness(int major);
-#else
-#define add_blkdev_randomness(_major) ((void)0)
-#endif
-
-extern int floppy_init(void);
-extern int rd_doload;          /* 1 = load ramdisk, 0 = don't load */
-extern int rd_prompt;          /* 1 = prompt for ramdisk, 0 = don't prompt */
-extern int rd_image_start;     /* starting block # of image */
-
-#ifdef CONFIG_BLK_DEV_INITRD
-
-#define INITRD_MINOR 250 /* shouldn't collide with /dev/ram* too soon ... */
-
-extern unsigned long initrd_start,initrd_end;
-extern int initrd_below_start_ok; /* 1 if it is not an error if initrd_start < memory_start */
-void initrd_init(void);
-
-#endif
-
-                
-/*
- * end_request() and friends. Must be called with the request queue spinlock
- * acquired. All functions called within end_request() _must_be_ atomic.
- *
- * Several drivers define their own end_request and call
- * end_that_request_first() and end_that_request_last()
- * for parts of the original function. This prevents
- * code duplication in drivers.
- */
-
-static inline void blkdev_dequeue_request(struct request * req)
-{
-       list_del(&req->queue);
-}
-
-int end_that_request_first(struct request *req, int uptodate, char *name);
-void end_that_request_last(struct request *req);
-
-#if defined(MAJOR_NR) || defined(IDE_DRIVER)
-
-#undef DEVICE_ON
-#undef DEVICE_OFF
-
-/*
- * Add entries as needed.
- */
-
-#ifdef IDE_DRIVER
-
-#define DEVICE_NR(device)      (MINOR(device) >> PARTN_BITS)
-#define DEVICE_NAME "ide"
-
-#elif (MAJOR_NR == RAMDISK_MAJOR)
-
-/* ram disk */
-#define DEVICE_NAME "ramdisk"
-#define DEVICE_NR(device) (MINOR(device))
-#define DEVICE_NO_RANDOM
-
-#elif (MAJOR_NR == Z2RAM_MAJOR)
-
-/* Zorro II Ram */
-#define DEVICE_NAME "Z2RAM"
-#define DEVICE_REQUEST do_z2_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == FLOPPY_MAJOR)
-
-static void floppy_off(unsigned int nr);
-
-#define DEVICE_NAME "floppy"
-#define DEVICE_INTR do_floppy
-#define DEVICE_REQUEST do_fd_request
-#define DEVICE_NR(device) ( (MINOR(device) & 3) | ((MINOR(device) & 0x80 ) >> 5 ))
-#define DEVICE_OFF(device) floppy_off(DEVICE_NR(device))
-
-#elif (MAJOR_NR == HD_MAJOR)
-
-/* Hard disk:  timeout is 6 seconds. */
-#define DEVICE_NAME "hard disk"
-#define DEVICE_INTR do_hd
-#define TIMEOUT_VALUE (6*HZ)
-#define DEVICE_REQUEST do_hd_request
-#define DEVICE_NR(device) (MINOR(device)>>6)
-
-#elif (SCSI_DISK_MAJOR(MAJOR_NR))
-
-#define DEVICE_NAME "scsidisk"
-#define TIMEOUT_VALUE (2*HZ)
-#define DEVICE_NR(device) (((MAJOR(device) & SD_MAJOR_MASK) << (8 - 4)) + (MINOR(device) >> 4))
-
-/* Kludge to use the same number for both char and block major numbers */
-#elif  (MAJOR_NR == MD_MAJOR) && defined(MD_DRIVER)
-
-#define DEVICE_NAME "Multiple devices driver"
-#define DEVICE_REQUEST do_md_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == SCSI_TAPE_MAJOR)
-
-#define DEVICE_NAME "scsitape"
-#define DEVICE_INTR do_st  
-#define DEVICE_NR(device) (MINOR(device) & 0x7f)
-
-#elif (MAJOR_NR == OSST_MAJOR)
-
-#define DEVICE_NAME "onstream" 
-#define DEVICE_INTR do_osst
-#define DEVICE_NR(device) (MINOR(device) & 0x7f) 
-#define DEVICE_ON(device) 
-#define DEVICE_OFF(device) 
-
-#elif (MAJOR_NR == SCSI_CDROM_MAJOR)
-
-#define DEVICE_NAME "CD-ROM"
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == XT_DISK_MAJOR)
-
-#define DEVICE_NAME "xt disk"
-#define DEVICE_REQUEST do_xd_request
-#define DEVICE_NR(device) (MINOR(device) >> 6)
-
-#elif (MAJOR_NR == PS2ESDI_MAJOR)
-
-#define DEVICE_NAME "PS/2 ESDI"
-#define DEVICE_REQUEST do_ps2esdi_request
-#define DEVICE_NR(device) (MINOR(device) >> 6)
-
-#elif (MAJOR_NR == CDU31A_CDROM_MAJOR)
-
-#define DEVICE_NAME "CDU31A"
-#define DEVICE_REQUEST do_cdu31a_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == ACSI_MAJOR) && (defined(CONFIG_ATARI_ACSI) || defined(CONFIG_ATARI_ACSI_MODULE))
-
-#define DEVICE_NAME "ACSI"
-#define DEVICE_INTR do_acsi
-#define DEVICE_REQUEST do_acsi_request
-#define DEVICE_NR(device) (MINOR(device) >> 4)
-
-#elif (MAJOR_NR == MITSUMI_CDROM_MAJOR)
-
-#define DEVICE_NAME "Mitsumi CD-ROM"
-/* #define DEVICE_INTR do_mcd */
-#define DEVICE_REQUEST do_mcd_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == MITSUMI_X_CDROM_MAJOR)
-
-#define DEVICE_NAME "Mitsumi CD-ROM"
-/* #define DEVICE_INTR do_mcdx */
-#define DEVICE_REQUEST do_mcdx_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == MATSUSHITA_CDROM_MAJOR)
-
-#define DEVICE_NAME "Matsushita CD-ROM controller #1"
-#define DEVICE_REQUEST do_sbpcd_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == MATSUSHITA_CDROM2_MAJOR)
-
-#define DEVICE_NAME "Matsushita CD-ROM controller #2"
-#define DEVICE_REQUEST do_sbpcd2_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == MATSUSHITA_CDROM3_MAJOR)
-
-#define DEVICE_NAME "Matsushita CD-ROM controller #3"
-#define DEVICE_REQUEST do_sbpcd3_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == MATSUSHITA_CDROM4_MAJOR)
-
-#define DEVICE_NAME "Matsushita CD-ROM controller #4"
-#define DEVICE_REQUEST do_sbpcd4_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == AZTECH_CDROM_MAJOR)
-
-#define DEVICE_NAME "Aztech CD-ROM"
-#define DEVICE_REQUEST do_aztcd_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == CDU535_CDROM_MAJOR)
-
-#define DEVICE_NAME "SONY-CDU535"
-#define DEVICE_INTR do_cdu535
-#define DEVICE_REQUEST do_cdu535_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == GOLDSTAR_CDROM_MAJOR)
-
-#define DEVICE_NAME "Goldstar R420"
-#define DEVICE_REQUEST do_gscd_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == CM206_CDROM_MAJOR)
-#define DEVICE_NAME "Philips/LMS CD-ROM cm206"
-#define DEVICE_REQUEST do_cm206_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == OPTICS_CDROM_MAJOR)
-
-#define DEVICE_NAME "DOLPHIN 8000AT CD-ROM"
-#define DEVICE_REQUEST do_optcd_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == SANYO_CDROM_MAJOR)
-
-#define DEVICE_NAME "Sanyo H94A CD-ROM"
-#define DEVICE_REQUEST do_sjcd_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == APBLOCK_MAJOR)
-
-#define DEVICE_NAME "apblock"
-#define DEVICE_REQUEST ap_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == DDV_MAJOR)
-
-#define DEVICE_NAME "ddv"
-#define DEVICE_REQUEST ddv_request
-#define DEVICE_NR(device) (MINOR(device)>>PARTN_BITS)
-
-#elif (MAJOR_NR == MFM_ACORN_MAJOR)
-
-#define DEVICE_NAME "mfm disk"
-#define DEVICE_INTR do_mfm
-#define DEVICE_REQUEST do_mfm_request
-#define DEVICE_NR(device) (MINOR(device) >> 6)
-
-#elif (MAJOR_NR == NBD_MAJOR)
-
-#define DEVICE_NAME "nbd"
-#define DEVICE_REQUEST do_nbd_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == MDISK_MAJOR)
-
-#define DEVICE_NAME "mdisk"
-#define DEVICE_REQUEST mdisk_request
-#define DEVICE_NR(device) (MINOR(device))
-
-#elif (MAJOR_NR == DASD_MAJOR)
-
-#define DEVICE_NAME "dasd"
-#define DEVICE_REQUEST do_dasd_request
-#define DEVICE_NR(device) (MINOR(device) >> PARTN_BITS)
-
-#elif (MAJOR_NR == I2O_MAJOR)
-
-#define DEVICE_NAME "I2O block"
-#define DEVICE_REQUEST i2ob_request
-#define DEVICE_NR(device) (MINOR(device)>>4)
-
-#elif (MAJOR_NR == COMPAQ_SMART2_MAJOR)
-
-#define DEVICE_NAME "ida"
-#define TIMEOUT_VALUE (25*HZ)
-#define DEVICE_REQUEST do_ida_request
-#define DEVICE_NR(device) (MINOR(device) >> 4)
-
-#endif /* MAJOR_NR == whatever */
-
-/* provide DEVICE_xxx defaults, if not explicitly defined
- * above in the MAJOR_NR==xxx if-elif tree */
-#ifndef DEVICE_ON
-#define DEVICE_ON(device) do {} while (0)
-#endif
-#ifndef DEVICE_OFF
-#define DEVICE_OFF(device) do {} while (0)
-#endif
-
-#if (MAJOR_NR != SCSI_TAPE_MAJOR) && (MAJOR_NR != OSST_MAJOR)
-#if !defined(IDE_DRIVER)
-
-#ifndef CURRENT
-#define CURRENT blkdev_entry_next_request(&blk_dev[MAJOR_NR].request_queue.queue_head)
-#endif
-#ifndef QUEUE_EMPTY
-#define QUEUE_EMPTY list_empty(&blk_dev[MAJOR_NR].request_queue.queue_head)
-#endif
-
-#ifndef DEVICE_NAME
-#define DEVICE_NAME "unknown"
-#endif
-
-#define CURRENT_DEV DEVICE_NR(CURRENT->rq_dev)
-
-#ifdef DEVICE_INTR
-static void (*DEVICE_INTR)(void) = NULL;
-#endif
-
-#define SET_INTR(x) (DEVICE_INTR = (x))
-
-#ifdef DEVICE_REQUEST
-static void (DEVICE_REQUEST)(request_queue_t *);
-#endif 
-  
-#ifdef DEVICE_INTR
-#define CLEAR_INTR SET_INTR(NULL)
-#else
-#define CLEAR_INTR
-#endif
-
-#define INIT_REQUEST \
-       if (QUEUE_EMPTY) {\
-               CLEAR_INTR; \
-               return; \
-       } \
-       if (MAJOR(CURRENT->rq_dev) != MAJOR_NR) \
-               panic(DEVICE_NAME ": request list destroyed"); \
-       if (CURRENT->bh) { \
-               if (!buffer_locked(CURRENT->bh)) \
-                       panic(DEVICE_NAME ": block not locked"); \
-       }
-
-#endif /* !defined(IDE_DRIVER) */
-
-
-#ifndef LOCAL_END_REQUEST      /* If we have our own end_request, we do not want to include this mess */
-
-#if ! SCSI_BLK_MAJOR(MAJOR_NR) && (MAJOR_NR != COMPAQ_SMART2_MAJOR)
-
-static inline void end_request(int uptodate) {
-       struct request *req = CURRENT;
-
-       if (end_that_request_first(req, uptodate, DEVICE_NAME))
-               return;
-
-#ifndef DEVICE_NO_RANDOM
-       add_blkdev_randomness(MAJOR(req->rq_dev));
-#endif
-       DEVICE_OFF(req->rq_dev);
-       blkdev_dequeue_request(req);
-       end_that_request_last(req);
-}
-
-#endif /* ! SCSI_BLK_MAJOR(MAJOR_NR) */
-#endif /* LOCAL_END_REQUEST */
-
-#endif /* (MAJOR_NR != SCSI_TAPE_MAJOR) */
-#endif /* defined(MAJOR_NR) || defined(IDE_DRIVER) */
-
-#endif /* _BLK_H */
diff --git a/xen/include/xeno/blkdev.h b/xen/include/xeno/blkdev.h
deleted file mode 100644 (file)
index ef45d31..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-#ifndef _LINUX_BLKDEV_H
-#define _LINUX_BLKDEV_H
-
-#include <xeno/lib.h>
-#include <asm/atomic.h>
-#include <asm/bitops.h>
-#include <xeno/list.h>
-#include <xeno/kdev_t.h>
-#include <xeno/sched.h>
-#include <xeno/mm.h>
-
-/* Some defines from fs.h that may actually be useful to the blkdev layer. */
-#define READ 0
-#define WRITE 1
-#define READA 2
-#define BLOCK_SIZE_BITS 10
-#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
-
-typedef struct {
-    struct task_struct *domain;
-    unsigned long       id;
-    atomic_t            pendcnt;
-    unsigned short      operation;
-    unsigned short      status;
-} pending_req_t;
-
-extern kdev_t xendev_to_physdev(unsigned short xendev);
-
-extern void init_blkdev_info(struct task_struct *);
-extern void unlink_blkdev_info(struct task_struct *);
-extern void destroy_blkdev_info(struct task_struct *);
-
-extern int unregister_blkdev(unsigned int, const char *);
-extern int invalidate_device(kdev_t, int);
-extern int check_disk_change(kdev_t);
-struct block_device;
-extern void invalidate_bdev(struct block_device *, int);
-
-/*
- * Metainformation regarding block devices is kept in inode and file
- * structures. We don't actually want those so we define just as much 
- * as we need right here.
- */
-struct file {
-};
-struct inode {
-    kdev_t i_rdev; /* for _open and _release, specifies the blkdev */
-    struct block_device *i_bdev;
-};
-
-struct block_device_operations {
-        int (*open) (struct inode *, struct file *);
-        int (*release) (struct inode *, struct file *);
-        int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long);
-        int (*check_media_change) (kdev_t);
-        int (*revalidate) (kdev_t);
-};
-
-
-enum bh_state_bits {
-        BH_Uptodate,    /* 1 if the buffer contains valid data */
-        BH_Dirty,       /* 1 if the buffer is dirty */
-        BH_Lock,        /* 1 if the buffer is locked */
-        BH_Req,         /* 0 if the buffer has been invalidated */
-        BH_Mapped,      /* 1 if the buffer has a disk mapping */
-        BH_New,         /* 1 if the buffer is new and not yet written out */
-        BH_Async,       /* 1 if the buffer is under end_buffer_io_async I/O */
-        BH_Wait_IO,     /* 1 if we should write out this buffer */
-        BH_Launder,     /* 1 if we can throttle on this buffer */
-        BH_JBD,         /* 1 if it has an attached journal_head */
-        BH_Read,        /* 1 if request is a read from disc */
-        BH_Write        /* 1 if request is a write to disc */
-};
-
-struct buffer_head {
-        unsigned long b_rsector;        /* Real buffer location on disk */
-        unsigned short b_size;          /* block size */
-        kdev_t b_dev;                   /* device (B_FREE = free) */
-        unsigned long b_state;          /* buffer state bitmap (see above) */
-        struct buffer_head *b_reqnext;  /* request queue */
-        char *b_data;                   /* pointer to data block */
-       struct pfn_info *b_page;        /* the page this bh is mapped to */
-        void (*b_end_io)(struct buffer_head *bh, int uptodate);
-        pending_req_t *pending_req;
-};
-
-#define b_rdev b_dev /* In Xen, there's no device layering (eg. s/w RAID). */
-
-typedef void (bh_end_io_t)(struct buffer_head *bh, int uptodate);
-void init_buffer(struct buffer_head *, bh_end_io_t *, void *);
-
-#define __buffer_state(bh, state)       (((bh)->b_state & (1UL << BH_##state)) != 0)
-
-#define buffer_uptodate(bh)     __buffer_state(bh,Uptodate)
-#define buffer_dirty(bh)        __buffer_state(bh,Dirty)
-#define buffer_locked(bh)       __buffer_state(bh,Lock)
-#define buffer_req(bh)          __buffer_state(bh,Req)
-#define buffer_mapped(bh)       __buffer_state(bh,Mapped)
-#define buffer_new(bh)          __buffer_state(bh,New)
-#define buffer_async(bh)        __buffer_state(bh,Async)
-#define buffer_launder(bh)      __buffer_state(bh,Launder)
-
-#define bh_offset(bh)           ((unsigned long)(bh)->b_data & ~PAGE_MASK)
-
-extern void set_bh_page(struct buffer_head *bh, struct pfn_info *page, unsigned long offset);
-
-#define atomic_set_buffer_clean(bh) test_and_clear_bit(BH_Dirty, &(bh)->b_state)
-
-static inline void __mark_buffer_clean(struct buffer_head *bh)
-{
-    panic("__mark_buffer_clean");
-}
-
-static inline void mark_buffer_clean(struct buffer_head * bh)
-{
-        if (atomic_set_buffer_clean(bh))
-                __mark_buffer_clean(bh);
-}
-
-static inline void buffer_IO_error(struct buffer_head * bh)
-{
-    mark_buffer_clean(bh);
-    /* b_end_io has to clear the BH_Uptodate bitflag in the error case! */
-    bh->b_end_io(bh, 0);
-}
-
-/**** XXX END OF BUFFER_HEAD STUFF XXXX ****/
-
-#include <xeno/major.h>
-#include <xeno/sched.h>
-#include <xeno/genhd.h>
-#include <xeno/tqueue.h>
-#include <xeno/list.h>
-
-struct request_queue;
-typedef struct request_queue request_queue_t;
-struct elevator_s;
-typedef struct elevator_s elevator_t;
-
-/*
- * Ok, this is an expanded form so that we can use the same
- * request for paging requests.
- */
-struct request {
-       struct list_head queue;
-       int elevator_sequence;
-
-       volatile int rq_status; /* should split this into a few status bits */
-#define RQ_INACTIVE            (-1)
-#define RQ_ACTIVE              1
-#define RQ_SCSI_BUSY           0xffff
-#define RQ_SCSI_DONE           0xfffe
-#define RQ_SCSI_DISCONNECTING  0xffe0
-
-       kdev_t rq_dev;
-       int cmd;                /* READ or WRITE */
-       int errors;
-       unsigned long start_time;
-       unsigned long sector;
-       unsigned long nr_sectors;
-       unsigned long hard_sector, hard_nr_sectors;
-       unsigned int nr_segments;
-       unsigned int nr_hw_segments;
-       unsigned long current_nr_sectors;
-       void * special;
-       char * buffer;
-       struct completion * waiting;
-       struct buffer_head * bh;
-       struct buffer_head * bhtail;
-       request_queue_t *q;
-};
-
-#include <xeno/elevator.h>
-
-typedef int (merge_request_fn) (request_queue_t *q, 
-                               struct request  *req,
-                               struct buffer_head *bh,
-                               int);
-typedef int (merge_requests_fn) (request_queue_t *q, 
-                                struct request  *req,
-                                struct request  *req2,
-                                int);
-typedef void (request_fn_proc) (request_queue_t *q);
-typedef request_queue_t * (queue_proc) (kdev_t dev);
-typedef int (make_request_fn) (request_queue_t *q, int rw, struct buffer_head *bh);
-typedef void (plug_device_fn) (request_queue_t *q, kdev_t device);
-typedef void (unplug_device_fn) (void *q);
-
-/*
- * Default nr free requests per queue, ll_rw_blk will scale it down
- * according to available RAM at init time
- */
-#define QUEUE_NR_REQUESTS      8192
-
-struct request_list {
-       unsigned int count;
-       struct list_head free;
-};
-
-struct request_queue
-{
-       /*
-        * the queue request freelist, one for reads and one for writes
-        */
-       struct request_list     rq[2];
-
-       /*
-        * The total number of requests on each queue
-        */
-       int nr_requests;
-
-       /*
-        * Batching threshold for sleep/wakeup decisions
-        */
-       int batch_requests;
-
-       /*
-        * Together with queue_head for cacheline sharing
-        */
-       struct list_head        queue_head;
-       elevator_t              elevator;
-
-       request_fn_proc         * request_fn;
-       merge_request_fn        * back_merge_fn;
-       merge_request_fn        * front_merge_fn;
-       merge_requests_fn       * merge_requests_fn;
-       make_request_fn         * make_request_fn;
-       plug_device_fn          * plug_device_fn;
-       /*
-        * The queue owner gets to use this for whatever they like.
-        * ll_rw_blk doesn't touch it.
-        */
-       void                    * queuedata;
-
-       /*
-        * This is used to remove the plug when tq_disk runs.
-        */
-       struct tq_struct        plug_tq;
-
-       /*
-        * Boolean that indicates whether this queue is plugged or not.
-        */
-       char                    plugged;
-
-       /*
-        * Boolean that indicates whether current_request is active or
-        * not.
-        */
-       char                    head_active;
-
-       unsigned long bounce_pfn; // XXX SMH: backported from 2.4.24
-
-       /*
-        * Is meant to protect the queue in the future instead of
-        * io_request_lock
-        */
-       spinlock_t              queue_lock;
-
-#if 0
-       /*
-        * Tasks wait here for free read and write requests
-        */
-       wait_queue_head_t       wait_for_requests[2];
-#endif
-};
-
-
-
-#ifdef CONFIG_HIGHMEM
-extern struct buffer_head *create_bounce(int, struct buffer_head *);
-extern inline struct buffer_head *blk_queue_bounce(request_queue_t *q, int rw,
-                                                  struct buffer_head *bh)
-{
-       struct page *page = bh->b_page;
-
-#ifndef CONFIG_DISCONTIGMEM
-       if (page - mem_map <= q->bounce_pfn)
-#else
-       if ((page - page_zone(page)->zone_mem_map) + (page_zone(page)->zone_start_paddr >> PAGE_SHIFT) <= q->bounce_pfn)
-#endif
-               return bh;
-
-       return create_bounce(rw, bh);
-}
-#else
-#define blk_queue_bounce(q, rw, bh)    (bh)
-#endif
-
-#define bh_phys(bh)            (page_to_phys((bh)->b_page) + bh_offset((bh)))
-
-#define BH_CONTIG(b1, b2)      (bh_phys((b1)) + (b1)->b_size == bh_phys((b2)))
-#define BH_PHYS_4G(b1, b2)     ((bh_phys((b1)) | 0xffffffff) == ((bh_phys((b2)) + (b2)->b_size - 1) | 0xffffffff))
-
-
-struct blk_dev_struct {
-       /*
-        * queue_proc has to be atomic
-        */
-       request_queue_t         request_queue;
-       queue_proc              *queue;
-       void                    *data;
-};
-
-struct sec_size {
-       unsigned block_size;
-       unsigned block_size_bits;
-};
-
-/*
- * Used to indicate the default queue for drivers that don't bother
- * to implement multiple queues.  We have this access macro here
- * so as to eliminate the need for each and every block device
- * driver to know about the internal structure of blk_dev[].
- */
-#define BLK_DEFAULT_QUEUE(_MAJOR)  &blk_dev[_MAJOR].request_queue
-
-extern struct sec_size * blk_sec[MAX_BLKDEV];
-extern struct blk_dev_struct blk_dev[MAX_BLKDEV];
-extern void grok_partitions(struct gendisk *dev, int drive, unsigned minors, long size);
-extern void register_disk(struct gendisk *dev, kdev_t first, unsigned minors, struct block_device_operations *ops, long size);
-extern void generic_make_request(int rw, struct buffer_head * bh);
-extern inline request_queue_t *blk_get_queue(kdev_t dev);
-extern void blkdev_release_request(struct request *);
-
-/*
- * Access functions for manipulating queue properties
- */
-extern int blk_grow_request_list(request_queue_t *q, int nr_requests);
-extern void blk_init_queue(request_queue_t *, request_fn_proc *);
-extern void blk_cleanup_queue(request_queue_t *);
-extern void blk_queue_headactive(request_queue_t *, int);
-extern void blk_queue_make_request(request_queue_t *, make_request_fn *);
-extern void generic_unplug_device(void *);
-extern inline int blk_seg_merge_ok(struct buffer_head *, struct buffer_head *);
-
-extern int * blk_size[MAX_BLKDEV];
-
-extern int * blksize_size[MAX_BLKDEV];
-
-extern int * hardsect_size[MAX_BLKDEV];
-
-/*extern int * max_readahead[MAX_BLKDEV];*/
-
-extern int * max_sectors[MAX_BLKDEV];
-
-extern int * max_segments[MAX_BLKDEV];
-
-extern int read_ahead[];
-
-#define MAX_SEGMENTS 128
-#define MAX_SECTORS 255
-
-#define PageAlignSize(size) (((size) + PAGE_SIZE -1) & PAGE_MASK)
-
-#define blkdev_entry_to_request(entry) list_entry((entry), struct request, queue)
-#define blkdev_entry_next_request(entry) blkdev_entry_to_request((entry)->next)
-#define blkdev_entry_prev_request(entry) blkdev_entry_to_request((entry)->prev)
-#define blkdev_next_request(req) blkdev_entry_to_request((req)->queue.next)
-#define blkdev_prev_request(req) blkdev_entry_to_request((req)->queue.prev)
-
-extern void drive_stat_acct (kdev_t dev, int rw,
-                                       unsigned long nr_sectors, int new_io);
-
-static inline int get_hardsect_size(kdev_t dev)
-{
-       int retval = 512;
-       int major = MAJOR(dev);
-
-       if (hardsect_size[major]) {
-               int minor = MINOR(dev);
-               if (hardsect_size[major][minor])
-                       retval = hardsect_size[major][minor];
-       }
-       return retval;
-}
-
-#define blk_finished_io(nsects)        do { } while (0)
-#define blk_started_io(nsects) do { } while (0)
-
-static inline unsigned int blksize_bits(unsigned int size)
-{
-       unsigned int bits = 8;
-       do {
-               bits++;
-               size >>= 1;
-       } while (size > 256);
-       return bits;
-}
-
-static inline unsigned int block_size(kdev_t dev)
-{
-       int retval = BLOCK_SIZE;
-       int major = MAJOR(dev);
-
-       if (blksize_size[major]) {
-               int minor = MINOR(dev);
-               if (blksize_size[major][minor])
-                       retval = blksize_size[major][minor];
-       }
-       return retval;
-}
-
-
-
-#endif
diff --git a/xen/include/xeno/blkpg.h b/xen/include/xeno/blkpg.h
deleted file mode 100644 (file)
index f4240ab..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef _LINUX_BLKPG_H
-#define _LINUX_BLKPG_H
-
-/*
- * Partition table and disk geometry handling
- *
- * A single ioctl with lots of subfunctions:
- *
- * Device number stuff:
- *    get_whole_disk()         (given the device number of a partition,
- *                               find the device number of the encompassing disk)
- *    get_all_partitions()     (given the device number of a disk, return the
- *                              device numbers of all its known partitions)
- *
- * Partition stuff:
- *    add_partition()
- *    delete_partition()
- *    test_partition_in_use()  (also for test_disk_in_use)
- *
- * Geometry stuff:
- *    get_geometry()
- *    set_geometry()
- *    get_bios_drivedata()
- *
- * For today, only the partition stuff - aeb, 990515
- */
-#include <xeno/ioctl.h>
-
-#define BLKPG      _IO(0x12,105)
-
-/* The argument structure */
-struct blkpg_ioctl_arg {
-        int op;
-        int flags;
-        int datalen;
-        void *data;
-};
-
-/* The subfunctions (for the op field) */
-#define BLKPG_ADD_PARTITION    1
-#define BLKPG_DEL_PARTITION    2
-
-/* Sizes of name fields. Unused at present. */
-#define BLKPG_DEVNAMELTH       64
-#define BLKPG_VOLNAMELTH       64
-
-/* The data structure for ADD_PARTITION and DEL_PARTITION */
-struct blkpg_partition {
-       long long start;                /* starting offset in bytes */
-       long long length;               /* length in bytes */
-       int pno;                        /* partition number */
-       char devname[BLKPG_DEVNAMELTH]; /* partition name, like sda5 or c0d1p2,
-                                          to be used in kernel messages */
-       char volname[BLKPG_VOLNAMELTH]; /* volume label */
-};
-
-#ifdef __KERNEL__
-
-extern char * partition_name(kdev_t dev);
-extern int blk_ioctl(kdev_t dev, unsigned int cmd, unsigned long arg);
-
-#endif /* __KERNEL__ */
-
-#endif /* _LINUX_BLKPG_H */
diff --git a/xen/include/xeno/brlock.h b/xen/include/xeno/brlock.h
deleted file mode 100644 (file)
index 96bfe4a..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-#ifndef __LINUX_BRLOCK_H
-#define __LINUX_BRLOCK_H
-
-/*
- * 'Big Reader' read-write spinlocks.
- *
- * super-fast read/write locks, with write-side penalty. The point
- * is to have a per-CPU read/write lock. Readers lock their CPU-local
- * readlock, writers must lock all locks to get write access. These
- * CPU-read-write locks are semantically identical to normal rwlocks.
- * Memory usage is higher as well. (NR_CPUS*L1_CACHE_BYTES bytes)
- *
- * The most important feature is that these spinlocks do not cause
- * cacheline ping-pong in the 'most readonly data' case.
- *
- * Copyright 2000, Ingo Molnar <mingo@redhat.com>
- *
- * Registry idea and naming [ crutial! :-) ] by:
- *
- *                 David S. Miller <davem@redhat.com>
- *
- * David has an implementation that doesnt use atomic operations in
- * the read branch via memory ordering tricks - i guess we need to
- * split this up into a per-arch thing? The atomicity issue is a
- * secondary item in profiles, at least on x86 platforms.
- *
- * The atomic op version overhead is indeed a big deal on
- * load-locked/store-conditional cpus (ALPHA/MIPS/PPC) and
- * compare-and-swap cpus (Sparc64).  So we control which
- * implementation to use with a __BRLOCK_USE_ATOMICS define. -DaveM
- */
-
-/* Register bigreader lock indices here. */
-enum brlock_indices {
-       BR_GLOBALIRQ_LOCK,
-       BR_NETPROTO_LOCK,
-
-       __BR_END
-};
-
-#include <xeno/config.h>
-
-#ifdef CONFIG_SMP
-
-#include <xeno/cache.h>
-#include <xeno/spinlock.h>
-
-#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
-#define __BRLOCK_USE_ATOMICS
-#else
-#undef __BRLOCK_USE_ATOMICS
-#endif
-
-#ifdef __BRLOCK_USE_ATOMICS
-typedef rwlock_t       brlock_read_lock_t;
-#else
-typedef unsigned int   brlock_read_lock_t;
-#endif
-
-/*
- * align last allocated index to the next cacheline:
- */
-#define __BR_IDX_MAX \
-       (((sizeof(brlock_read_lock_t)*__BR_END + SMP_CACHE_BYTES-1) & ~(SMP_CACHE_BYTES-1)) / sizeof(brlock_read_lock_t))
-
-extern brlock_read_lock_t __brlock_array[NR_CPUS][__BR_IDX_MAX];
-
-#ifndef __BRLOCK_USE_ATOMICS
-struct br_wrlock {
-       spinlock_t lock;
-} __attribute__ ((__aligned__(SMP_CACHE_BYTES)));
-
-extern struct br_wrlock __br_write_locks[__BR_IDX_MAX];
-#endif
-
-extern void __br_lock_usage_bug (void);
-
-#ifdef __BRLOCK_USE_ATOMICS
-
-static inline void br_read_lock (enum brlock_indices idx)
-{
-       /*
-        * This causes a link-time bug message if an
-        * invalid index is used:
-        */
-       if (idx >= __BR_END)
-               __br_lock_usage_bug();
-
-       read_lock(&__brlock_array[smp_processor_id()][idx]);
-}
-
-static inline void br_read_unlock (enum brlock_indices idx)
-{
-       if (idx >= __BR_END)
-               __br_lock_usage_bug();
-
-       read_unlock(&__brlock_array[smp_processor_id()][idx]);
-}
-
-#else /* ! __BRLOCK_USE_ATOMICS */
-static inline void br_read_lock (enum brlock_indices idx)
-{
-       unsigned int *ctr;
-       spinlock_t *lock;
-
-       /*
-        * This causes a link-time bug message if an
-        * invalid index is used:
-        */
-       if (idx >= __BR_END)
-               __br_lock_usage_bug();
-
-       ctr = &__brlock_array[smp_processor_id()][idx];
-       lock = &__br_write_locks[idx].lock;
-again:
-       (*ctr)++;
-       mb();
-       if (spin_is_locked(lock)) {
-               (*ctr)--;
-               wmb(); /*
-                       * The release of the ctr must become visible
-                       * to the other cpus eventually thus wmb(),
-                       * we don't care if spin_is_locked is reordered
-                       * before the releasing of the ctr.
-                       * However IMHO this wmb() is superflous even in theory.
-                       * It would not be superflous only if on the
-                       * other CPUs doing a ldl_l instead of an ldl
-                       * would make a difference and I don't think this is
-                       * the case.
-                       * I'd like to clarify this issue further
-                       * but for now this is a slow path so adding the
-                       * wmb() will keep us on the safe side.
-                       */
-               while (spin_is_locked(lock))
-                       barrier();
-               goto again;
-       }
-}
-
-static inline void br_read_unlock (enum brlock_indices idx)
-{
-       unsigned int *ctr;
-
-       if (idx >= __BR_END)
-               __br_lock_usage_bug();
-
-       ctr = &__brlock_array[smp_processor_id()][idx];
-
-       wmb();
-       (*ctr)--;
-}
-#endif /* __BRLOCK_USE_ATOMICS */
-
-/* write path not inlined - it's rare and larger */
-
-extern void FASTCALL(__br_write_lock (enum brlock_indices idx));
-extern void FASTCALL(__br_write_unlock (enum brlock_indices idx));
-
-static inline void br_write_lock (enum brlock_indices idx)
-{
-       if (idx >= __BR_END)
-               __br_lock_usage_bug();
-       __br_write_lock(idx);
-}
-
-static inline void br_write_unlock (enum brlock_indices idx)
-{
-       if (idx >= __BR_END)
-               __br_lock_usage_bug();
-       __br_write_unlock(idx);
-}
-
-#else
-# define br_read_lock(idx)     ((void)(idx))
-# define br_read_unlock(idx)   ((void)(idx))
-# define br_write_lock(idx)    ((void)(idx))
-# define br_write_unlock(idx)  ((void)(idx))
-#endif
-
-/*
- * Now enumerate all of the possible sw/hw IRQ protected
- * versions of the interfaces.
- */
-#define br_read_lock_irqsave(idx, flags) \
-       do { local_irq_save(flags); br_read_lock(idx); } while (0)
-
-#define br_read_lock_irq(idx) \
-       do { local_irq_disable(); br_read_lock(idx); } while (0)
-
-#define br_read_lock_bh(idx) \
-       do { local_bh_disable(); br_read_lock(idx); } while (0)
-
-#define br_write_lock_irqsave(idx, flags) \
-       do { local_irq_save(flags); br_write_lock(idx); } while (0)
-
-#define br_write_lock_irq(idx) \
-       do { local_irq_disable(); br_write_lock(idx); } while (0)
-
-#define br_write_lock_bh(idx) \
-       do { local_bh_disable(); br_write_lock(idx); } while (0)
-
-#define br_read_unlock_irqrestore(idx, flags) \
-       do { br_read_unlock(irx); local_irq_restore(flags); } while (0)
-
-#define br_read_unlock_irq(idx) \
-       do { br_read_unlock(idx); local_irq_enable(); } while (0)
-
-#define br_read_unlock_bh(idx) \
-       do { br_read_unlock(idx); local_bh_enable(); } while (0)
-
-#define br_write_unlock_irqrestore(idx, flags) \
-       do { br_write_unlock(irx); local_irq_restore(flags); } while (0)
-
-#define br_write_unlock_irq(idx) \
-       do { br_write_unlock(idx); local_irq_enable(); } while (0)
-
-#define br_write_unlock_bh(idx) \
-       do { br_write_unlock(idx); local_bh_enable(); } while (0)
-
-#endif /* __LINUX_BRLOCK_H */
diff --git a/xen/include/xeno/byteorder/big_endian.h b/xen/include/xeno/byteorder/big_endian.h
deleted file mode 100644 (file)
index c3c0ecd..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef _LINUX_BYTEORDER_BIG_ENDIAN_H
-#define _LINUX_BYTEORDER_BIG_ENDIAN_H
-
-#ifndef __BIG_ENDIAN
-#define __BIG_ENDIAN 4321
-#endif
-#ifndef __BIG_ENDIAN_BITFIELD
-#define __BIG_ENDIAN_BITFIELD
-#endif
-
-#include <xeno/byteorder/swab.h>
-
-#define __constant_htonl(x) ((__u32)(x))
-#define __constant_ntohl(x) ((__u32)(x))
-#define __constant_htons(x) ((__u16)(x))
-#define __constant_ntohs(x) ((__u16)(x))
-#define __constant_cpu_to_le64(x) ___constant_swab64((x))
-#define __constant_le64_to_cpu(x) ___constant_swab64((x))
-#define __constant_cpu_to_le32(x) ___constant_swab32((x))
-#define __constant_le32_to_cpu(x) ___constant_swab32((x))
-#define __constant_cpu_to_le16(x) ___constant_swab16((x))
-#define __constant_le16_to_cpu(x) ___constant_swab16((x))
-#define __constant_cpu_to_be64(x) ((__u64)(x))
-#define __constant_be64_to_cpu(x) ((__u64)(x))
-#define __constant_cpu_to_be32(x) ((__u32)(x))
-#define __constant_be32_to_cpu(x) ((__u32)(x))
-#define __constant_cpu_to_be16(x) ((__u16)(x))
-#define __constant_be16_to_cpu(x) ((__u16)(x))
-#define __cpu_to_le64(x) __swab64((x))
-#define __le64_to_cpu(x) __swab64((x))
-#define __cpu_to_le32(x) __swab32((x))
-#define __le32_to_cpu(x) __swab32((x))
-#define __cpu_to_le16(x) __swab16((x))
-#define __le16_to_cpu(x) __swab16((x))
-#define __cpu_to_be64(x) ((__u64)(x))
-#define __be64_to_cpu(x) ((__u64)(x))
-#define __cpu_to_be32(x) ((__u32)(x))
-#define __be32_to_cpu(x) ((__u32)(x))
-#define __cpu_to_be16(x) ((__u16)(x))
-#define __be16_to_cpu(x) ((__u16)(x))
-#define __cpu_to_le64p(x) __swab64p((x))
-#define __le64_to_cpup(x) __swab64p((x))
-#define __cpu_to_le32p(x) __swab32p((x))
-#define __le32_to_cpup(x) __swab32p((x))
-#define __cpu_to_le16p(x) __swab16p((x))
-#define __le16_to_cpup(x) __swab16p((x))
-#define __cpu_to_be64p(x) (*(__u64*)(x))
-#define __be64_to_cpup(x) (*(__u64*)(x))
-#define __cpu_to_be32p(x) (*(__u32*)(x))
-#define __be32_to_cpup(x) (*(__u32*)(x))
-#define __cpu_to_be16p(x) (*(__u16*)(x))
-#define __be16_to_cpup(x) (*(__u16*)(x))
-#define __cpu_to_le64s(x) __swab64s((x))
-#define __le64_to_cpus(x) __swab64s((x))
-#define __cpu_to_le32s(x) __swab32s((x))
-#define __le32_to_cpus(x) __swab32s((x))
-#define __cpu_to_le16s(x) __swab16s((x))
-#define __le16_to_cpus(x) __swab16s((x))
-#define __cpu_to_be64s(x) do {} while (0)
-#define __be64_to_cpus(x) do {} while (0)
-#define __cpu_to_be32s(x) do {} while (0)
-#define __be32_to_cpus(x) do {} while (0)
-#define __cpu_to_be16s(x) do {} while (0)
-#define __be16_to_cpus(x) do {} while (0)
-
-#include <xeno/byteorder/generic.h>
-
-#endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */
diff --git a/xen/include/xeno/byteorder/generic.h b/xen/include/xeno/byteorder/generic.h
deleted file mode 100644 (file)
index d3d63a5..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-#ifndef _LINUX_BYTEORDER_GENERIC_H
-#define _LINUX_BYTEORDER_GENERIC_H
-
-/*
- * linux/byteorder_generic.h
- * Generic Byte-reordering support
- *
- * Francois-Rene Rideau <fare@tunes.org> 19970707
- *    gathered all the good ideas from all asm-foo/byteorder.h into one file,
- *    cleaned them up.
- *    I hope it is compliant with non-GCC compilers.
- *    I decided to put __BYTEORDER_HAS_U64__ in byteorder.h,
- *    because I wasn't sure it would be ok to put it in types.h
- *    Upgraded it to 2.1.43
- * Francois-Rene Rideau <fare@tunes.org> 19971012
- *    Upgraded it to 2.1.57
- *    to please Linus T., replaced huge #ifdef's between little/big endian
- *    by nestedly #include'd files.
- * Francois-Rene Rideau <fare@tunes.org> 19971205
- *    Made it to 2.1.71; now a facelift:
- *    Put files under include/linux/byteorder/
- *    Split swab from generic support.
- *
- * TODO:
- *   = Regular kernel maintainers could also replace all these manual
- *    byteswap macros that remain, disseminated among drivers,
- *    after some grep or the sources...
- *   = Linus might want to rename all these macros and files to fit his taste,
- *    to fit his personal naming scheme.
- *   = it seems that a few drivers would also appreciate
- *    nybble swapping support...
- *   = every architecture could add their byteswap macro in asm/byteorder.h
- *    see how some architectures already do (i386, alpha, ppc, etc)
- *   = cpu_to_beXX and beXX_to_cpu might some day need to be well
- *    distinguished throughout the kernel. This is not the case currently,
- *    since little endian, big endian, and pdp endian machines needn't it.
- *    But this might be the case for, say, a port of Linux to 20/21 bit
- *    architectures (and F21 Linux addict around?).
- */
-
-/*
- * The following macros are to be defined by <asm/byteorder.h>:
- *
- * Conversion of long and short int between network and host format
- *     ntohl(__u32 x)
- *     ntohs(__u16 x)
- *     htonl(__u32 x)
- *     htons(__u16 x)
- * It seems that some programs (which? where? or perhaps a standard? POSIX?)
- * might like the above to be functions, not macros (why?).
- * if that's true, then detect them, and take measures.
- * Anyway, the measure is: define only ___ntohl as a macro instead,
- * and in a separate file, have
- * unsigned long inline ntohl(x){return ___ntohl(x);}
- *
- * The same for constant arguments
- *     __constant_ntohl(__u32 x)
- *     __constant_ntohs(__u16 x)
- *     __constant_htonl(__u32 x)
- *     __constant_htons(__u16 x)
- *
- * Conversion of XX-bit integers (16- 32- or 64-)
- * between native CPU format and little/big endian format
- * 64-bit stuff only defined for proper architectures
- *     cpu_to_[bl]eXX(__uXX x)
- *     [bl]eXX_to_cpu(__uXX x)
- *
- * The same, but takes a pointer to the value to convert
- *     cpu_to_[bl]eXXp(__uXX x)
- *     [bl]eXX_to_cpup(__uXX x)
- *
- * The same, but change in situ
- *     cpu_to_[bl]eXXs(__uXX x)
- *     [bl]eXX_to_cpus(__uXX x)
- *
- * See asm-foo/byteorder.h for examples of how to provide
- * architecture-optimized versions
- *
- */
-
-
-#if defined(__KERNEL__)
-/*
- * inside the kernel, we can use nicknames;
- * outside of it, we must avoid POSIX namespace pollution...
- */
-#define cpu_to_le64 __cpu_to_le64
-#define le64_to_cpu __le64_to_cpu
-#define cpu_to_le32 __cpu_to_le32
-#define le32_to_cpu __le32_to_cpu
-#define cpu_to_le16 __cpu_to_le16
-#define le16_to_cpu __le16_to_cpu
-#define cpu_to_be64 __cpu_to_be64
-#define be64_to_cpu __be64_to_cpu
-#define cpu_to_be32 __cpu_to_be32
-#define be32_to_cpu __be32_to_cpu
-#define cpu_to_be16 __cpu_to_be16
-#define be16_to_cpu __be16_to_cpu
-#define cpu_to_le64p __cpu_to_le64p
-#define le64_to_cpup __le64_to_cpup
-#define cpu_to_le32p __cpu_to_le32p
-#define le32_to_cpup __le32_to_cpup
-#define cpu_to_le16p __cpu_to_le16p
-#define le16_to_cpup __le16_to_cpup
-#define cpu_to_be64p __cpu_to_be64p
-#define be64_to_cpup __be64_to_cpup
-#define cpu_to_be32p __cpu_to_be32p
-#define be32_to_cpup __be32_to_cpup
-#define cpu_to_be16p __cpu_to_be16p
-#define be16_to_cpup __be16_to_cpup
-#define cpu_to_le64s __cpu_to_le64s
-#define le64_to_cpus __le64_to_cpus
-#define cpu_to_le32s __cpu_to_le32s
-#define le32_to_cpus __le32_to_cpus
-#define cpu_to_le16s __cpu_to_le16s
-#define le16_to_cpus __le16_to_cpus
-#define cpu_to_be64s __cpu_to_be64s
-#define be64_to_cpus __be64_to_cpus
-#define cpu_to_be32s __cpu_to_be32s
-#define be32_to_cpus __be32_to_cpus
-#define cpu_to_be16s __cpu_to_be16s
-#define be16_to_cpus __be16_to_cpus
-#endif
-
-
-/*
- * Handle ntohl and suches. These have various compatibility
- * issues - like we want to give the prototype even though we
- * also have a macro for them in case some strange program
- * wants to take the address of the thing or something..
- *
- * Note that these used to return a "long" in libc5, even though
- * long is often 64-bit these days.. Thus the casts.
- *
- * They have to be macros in order to do the constant folding
- * correctly - if the argument passed into a inline function
- * it is no longer constant according to gcc..
- */
-
-#undef ntohl
-#undef ntohs
-#undef htonl
-#undef htons
-
-/*
- * Do the prototypes. Somebody might want to take the
- * address or some such sick thing..
- */
-#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >= 2)
-extern __u32                   ntohl(__u32);
-extern __u32                   htonl(__u32);
-#else
-extern unsigned long int       ntohl(unsigned long int);
-extern unsigned long int       htonl(unsigned long int);
-#endif
-extern unsigned short int      ntohs(unsigned short int);
-extern unsigned short int      htons(unsigned short int);
-
-
-#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
-
-#define ___htonl(x) __cpu_to_be32(x)
-#define ___htons(x) __cpu_to_be16(x)
-#define ___ntohl(x) __be32_to_cpu(x)
-#define ___ntohs(x) __be16_to_cpu(x)
-
-#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >= 2)
-#define htonl(x) ___htonl(x)
-#define ntohl(x) ___ntohl(x)
-#else
-#define htonl(x) ((unsigned long)___htonl(x))
-#define ntohl(x) ((unsigned long)___ntohl(x))
-#endif
-#define htons(x) ___htons(x)
-#define ntohs(x) ___ntohs(x)
-
-#endif /* OPTIMIZE */
-
-
-#endif /* _LINUX_BYTEORDER_GENERIC_H */
diff --git a/xen/include/xeno/byteorder/little_endian.h b/xen/include/xeno/byteorder/little_endian.h
deleted file mode 100644 (file)
index bdc276b..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H
-#define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
-
-#ifndef __LITTLE_ENDIAN
-#define __LITTLE_ENDIAN 1234
-#endif
-#ifndef __LITTLE_ENDIAN_BITFIELD
-#define __LITTLE_ENDIAN_BITFIELD
-#endif
-
-#include <xeno/byteorder/swab.h>
-
-#define __constant_htonl(x) ___constant_swab32((x))
-#define __constant_ntohl(x) ___constant_swab32((x))
-#define __constant_htons(x) ___constant_swab16((x))
-#define __constant_ntohs(x) ___constant_swab16((x))
-#define __constant_cpu_to_le64(x) ((__u64)(x))
-#define __constant_le64_to_cpu(x) ((__u64)(x))
-#define __constant_cpu_to_le32(x) ((__u32)(x))
-#define __constant_le32_to_cpu(x) ((__u32)(x))
-#define __constant_cpu_to_le16(x) ((__u16)(x))
-#define __constant_le16_to_cpu(x) ((__u16)(x))
-#define __constant_cpu_to_be64(x) ___constant_swab64((x))
-#define __constant_be64_to_cpu(x) ___constant_swab64((x))
-#define __constant_cpu_to_be32(x) ___constant_swab32((x))
-#define __constant_be32_to_cpu(x) ___constant_swab32((x))
-#define __constant_cpu_to_be16(x) ___constant_swab16((x))
-#define __constant_be16_to_cpu(x) ___constant_swab16((x))
-#define __cpu_to_le64(x) ((__u64)(x))
-#define __le64_to_cpu(x) ((__u64)(x))
-#define __cpu_to_le32(x) ((__u32)(x))
-#define __le32_to_cpu(x) ((__u32)(x))
-#define __cpu_to_le16(x) ((__u16)(x))
-#define __le16_to_cpu(x) ((__u16)(x))
-#define __cpu_to_be64(x) __swab64((x))
-#define __be64_to_cpu(x) __swab64((x))
-#define __cpu_to_be32(x) __swab32((x))
-#define __be32_to_cpu(x) __swab32((x))
-#define __cpu_to_be16(x) __swab16((x))
-#define __be16_to_cpu(x) __swab16((x))
-#define __cpu_to_le64p(x) (*(__u64*)(x))
-#define __le64_to_cpup(x) (*(__u64*)(x))
-#define __cpu_to_le32p(x) (*(__u32*)(x))
-#define __le32_to_cpup(x) (*(__u32*)(x))
-#define __cpu_to_le16p(x) (*(__u16*)(x))
-#define __le16_to_cpup(x) (*(__u16*)(x))
-#define __cpu_to_be64p(x) __swab64p((x))
-#define __be64_to_cpup(x) __swab64p((x))
-#define __cpu_to_be32p(x) __swab32p((x))
-#define __be32_to_cpup(x) __swab32p((x))
-#define __cpu_to_be16p(x) __swab16p((x))
-#define __be16_to_cpup(x) __swab16p((x))
-#define __cpu_to_le64s(x) do {} while (0)
-#define __le64_to_cpus(x) do {} while (0)
-#define __cpu_to_le32s(x) do {} while (0)
-#define __le32_to_cpus(x) do {} while (0)
-#define __cpu_to_le16s(x) do {} while (0)
-#define __le16_to_cpus(x) do {} while (0)
-#define __cpu_to_be64s(x) __swab64s((x))
-#define __be64_to_cpus(x) __swab64s((x))
-#define __cpu_to_be32s(x) __swab32s((x))
-#define __be32_to_cpus(x) __swab32s((x))
-#define __cpu_to_be16s(x) __swab16s((x))
-#define __be16_to_cpus(x) __swab16s((x))
-
-#include <xeno/byteorder/generic.h>
-
-#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */
diff --git a/xen/include/xeno/byteorder/pdp_endian.h b/xen/include/xeno/byteorder/pdp_endian.h
deleted file mode 100644 (file)
index 9f4f983..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#ifndef _LINUX_BYTEORDER_PDP_ENDIAN_H
-#define _LINUX_BYTEORDER_PDP_ENDIAN_H
-
-/*
- * Could have been named NUXI-endian, but we use the same name as in glibc.
- * hopefully only the PDP and its evolutions (old VAXen in compatibility mode)
- * should ever use this braindead byteorder.
- * This file *should* work, but has not been tested.
- *
- * little-endian is 1234; big-endian is 4321; nuxi/pdp-endian is 3412
- *
- * I thought vaxen were NUXI-endian, but was told they were correct-endian
- * (little-endian), though indeed there existed NUXI-endian machines
- * (DEC PDP-11 and old VAXen in compatibility mode).
- * This makes this file a bit useless, but as a proof-of-concept.
- *
- * But what does a __u64 look like: is it 34127856 or 78563412 ???
- * I don't dare imagine! Hence, no 64-bit byteorder support yet.
- * Hopefully, there 64-bit pdp-endian support shouldn't ever be required.
- *
- */
-
-#ifndef __PDP_ENDIAN
-#define __PDP_ENDIAN 3412
-#endif
-#ifndef __PDP_ENDIAN_BITFIELD
-#define __PDP_ENDIAN_BITFIELD
-#endif
-
-#include <xeno/byteorder/swab.h>
-#include <xeno/byteorder/swabb.h>
-
-#define __constant_htonl(x) ___constant_swahb32((x))
-#define __constant_ntohl(x) ___constant_swahb32((x))
-#define __constant_htons(x) ___constant_swab16((x))
-#define __constant_ntohs(x) ___constant_swab16((x))
-#define __constant_cpu_to_le64(x) I DON'T KNOW
-#define __constant_le64_to_cpu(x) I DON'T KNOW
-#define __constant_cpu_to_le32(x) ___constant_swahw32((x))
-#define __constant_le32_to_cpu(x) ___constant_swahw32((x))
-#define __constant_cpu_to_le16(x) ((__u16)(x)
-#define __constant_le16_to_cpu(x) ((__u16)(x)
-#define __constant_cpu_to_be64(x) I DON'T KNOW
-#define __constant_be64_to_cpu(x) I DON'T KNOW
-#define __constant_cpu_to_be32(x) ___constant_swahb32((x))
-#define __constant_be32_to_cpu(x) ___constant_swahb32((x))
-#define __constant_cpu_to_be16(x) ___constant_swab16((x))
-#define __constant_be16_to_cpu(x) ___constant_swab16((x))
-#define __cpu_to_le64(x) I DON'T KNOW
-#define __le64_to_cpu(x) I DON'T KNOW
-#define __cpu_to_le32(x) ___swahw32((x))
-#define __le32_to_cpu(x) ___swahw32((x))
-#define __cpu_to_le16(x) ((__u16)(x)
-#define __le16_to_cpu(x) ((__u16)(x)
-#define __cpu_to_be64(x) I DON'T KNOW
-#define __be64_to_cpu(x) I DON'T KNOW
-#define __cpu_to_be32(x) __swahb32((x))
-#define __be32_to_cpu(x) __swahb32((x))
-#define __cpu_to_be16(x) __swab16((x))
-#define __be16_to_cpu(x) __swab16((x))
-#define __cpu_to_le64p(x) I DON'T KNOW
-#define __le64_to_cpup(x) I DON'T KNOW
-#define __cpu_to_le32p(x) ___swahw32p((x))
-#define __le32_to_cpup(x) ___swahw32p((x))
-#define __cpu_to_le16p(x) (*(__u16*)(x))
-#define __le16_to_cpup(x) (*(__u16*)(x))
-#define __cpu_to_be64p(x) I DON'T KNOW
-#define __be64_to_cpup(x) I DON'T KNOW
-#define __cpu_to_be32p(x) __swahb32p((x))
-#define __be32_to_cpup(x) __swahb32p((x))
-#define __cpu_to_be16p(x) __swab16p((x))
-#define __be16_to_cpup(x) __swab16p((x))
-#define __cpu_to_le64s(x) I DON'T KNOW
-#define __le64_to_cpus(x) I DON'T KNOW
-#define __cpu_to_le32s(x) ___swahw32s((x))
-#define __le32_to_cpus(x) ___swahw32s((x))
-#define __cpu_to_le16s(x) do {} while (0)
-#define __le16_to_cpus(x) do {} while (0)
-#define __cpu_to_be64s(x) I DON'T KNOW
-#define __be64_to_cpus(x) I DON'T KNOW
-#define __cpu_to_be32s(x) __swahb32s((x))
-#define __be32_to_cpus(x) __swahb32s((x))
-#define __cpu_to_be16s(x) __swab16s((x))
-#define __be16_to_cpus(x) __swab16s((x))
-
-#include <xeno/byteorder/generic.h>
-
-#endif /* _LINUX_BYTEORDER_PDP_ENDIAN_H */
diff --git a/xen/include/xeno/byteorder/swab.h b/xen/include/xeno/byteorder/swab.h
deleted file mode 100644 (file)
index 814b451..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-#ifndef _LINUX_BYTEORDER_SWAB_H
-#define _LINUX_BYTEORDER_SWAB_H
-
-/*
- * linux/byteorder/swab.h
- * Byte-swapping, independently from CPU endianness
- *     swabXX[ps]?(foo)
- *
- * Francois-Rene Rideau <fare@tunes.org> 19971205
- *    separated swab functions from cpu_to_XX,
- *    to clean up support for bizarre-endian architectures.
- *
- * See asm-i386/byteorder.h and suches for examples of how to provide
- * architecture-dependent optimized versions
- *
- */
-
-/* casts are necessary for constants, because we never know how for sure
- * how U/UL/ULL map to __u16, __u32, __u64. At least not in a portable way.
- */
-#define ___swab16(x) \
-({ \
-       __u16 __x = (x); \
-       ((__u16)( \
-               (((__u16)(__x) & (__u16)0x00ffU) << 8) | \
-               (((__u16)(__x) & (__u16)0xff00U) >> 8) )); \
-})
-
-#define ___swab32(x) \
-({ \
-       __u32 __x = (x); \
-       ((__u32)( \
-               (((__u32)(__x) & (__u32)0x000000ffUL) << 24) | \
-               (((__u32)(__x) & (__u32)0x0000ff00UL) <<  8) | \
-               (((__u32)(__x) & (__u32)0x00ff0000UL) >>  8) | \
-               (((__u32)(__x) & (__u32)0xff000000UL) >> 24) )); \
-})
-
-#define ___swab64(x) \
-({ \
-       __u64 __x = (x); \
-       ((__u64)( \
-               (__u64)(((__u64)(__x) & (__u64)0x00000000000000ffULL) << 56) | \
-               (__u64)(((__u64)(__x) & (__u64)0x000000000000ff00ULL) << 40) | \
-               (__u64)(((__u64)(__x) & (__u64)0x0000000000ff0000ULL) << 24) | \
-               (__u64)(((__u64)(__x) & (__u64)0x00000000ff000000ULL) <<  8) | \
-               (__u64)(((__u64)(__x) & (__u64)0x000000ff00000000ULL) >>  8) | \
-               (__u64)(((__u64)(__x) & (__u64)0x0000ff0000000000ULL) >> 24) | \
-               (__u64)(((__u64)(__x) & (__u64)0x00ff000000000000ULL) >> 40) | \
-               (__u64)(((__u64)(__x) & (__u64)0xff00000000000000ULL) >> 56) )); \
-})
-
-#define ___constant_swab16(x) \
-       ((__u16)( \
-               (((__u16)(x) & (__u16)0x00ffU) << 8) | \
-               (((__u16)(x) & (__u16)0xff00U) >> 8) ))
-#define ___constant_swab32(x) \
-       ((__u32)( \
-               (((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
-               (((__u32)(x) & (__u32)0x0000ff00UL) <<  8) | \
-               (((__u32)(x) & (__u32)0x00ff0000UL) >>  8) | \
-               (((__u32)(x) & (__u32)0xff000000UL) >> 24) ))
-#define ___constant_swab64(x) \
-       ((__u64)( \
-               (__u64)(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \
-               (__u64)(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \
-               (__u64)(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \
-               (__u64)(((__u64)(x) & (__u64)0x00000000ff000000ULL) <<  8) | \
-               (__u64)(((__u64)(x) & (__u64)0x000000ff00000000ULL) >>  8) | \
-               (__u64)(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) | \
-               (__u64)(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) | \
-               (__u64)(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56) ))
-
-/*
- * provide defaults when no architecture-specific optimization is detected
- */
-#ifndef __arch__swab16
-#  define __arch__swab16(x) ({ __u16 __tmp = (x) ; ___swab16(__tmp); })
-#endif
-#ifndef __arch__swab32
-#  define __arch__swab32(x) ({ __u32 __tmp = (x) ; ___swab32(__tmp); })
-#endif
-#ifndef __arch__swab64
-#  define __arch__swab64(x) ({ __u64 __tmp = (x) ; ___swab64(__tmp); })
-#endif
-
-#ifndef __arch__swab16p
-#  define __arch__swab16p(x) __arch__swab16(*(x))
-#endif
-#ifndef __arch__swab32p
-#  define __arch__swab32p(x) __arch__swab32(*(x))
-#endif
-#ifndef __arch__swab64p
-#  define __arch__swab64p(x) __arch__swab64(*(x))
-#endif
-
-#ifndef __arch__swab16s
-#  define __arch__swab16s(x) do { *(x) = __arch__swab16p((x)); } while (0)
-#endif
-#ifndef __arch__swab32s
-#  define __arch__swab32s(x) do { *(x) = __arch__swab32p((x)); } while (0)
-#endif
-#ifndef __arch__swab64s
-#  define __arch__swab64s(x) do { *(x) = __arch__swab64p((x)); } while (0)
-#endif
-
-
-/*
- * Allow constant folding
- */
-#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
-#  define __swab16(x) \
-(__builtin_constant_p((__u16)(x)) ? \
- ___swab16((x)) : \
- __fswab16((x)))
-#  define __swab32(x) \
-(__builtin_constant_p((__u32)(x)) ? \
- ___swab32((x)) : \
- __fswab32((x)))
-#  define __swab64(x) \
-(__builtin_constant_p((__u64)(x)) ? \
- ___swab64((x)) : \
- __fswab64((x)))
-#else
-#  define __swab16(x) __fswab16(x)
-#  define __swab32(x) __fswab32(x)
-#  define __swab64(x) __fswab64(x)
-#endif /* OPTIMIZE */
-
-
-static __inline__ __const__ __u16 __fswab16(__u16 x)
-{
-       return __arch__swab16(x);
-}
-static __inline__ __u16 __swab16p(__u16 *x)
-{
-       return __arch__swab16p(x);
-}
-static __inline__ void __swab16s(__u16 *addr)
-{
-       __arch__swab16s(addr);
-}
-
-static __inline__ __const__ __u32 __fswab32(__u32 x)
-{
-       return __arch__swab32(x);
-}
-static __inline__ __u32 __swab32p(__u32 *x)
-{
-       return __arch__swab32p(x);
-}
-static __inline__ void __swab32s(__u32 *addr)
-{
-       __arch__swab32s(addr);
-}
-
-#ifdef __BYTEORDER_HAS_U64__
-static __inline__ __const__ __u64 __fswab64(__u64 x)
-{
-#  ifdef __SWAB_64_THRU_32__
-       __u32 h = x >> 32;
-        __u32 l = x & ((1ULL<<32)-1);
-        return (((__u64)__swab32(l)) << 32) | ((__u64)(__swab32(h)));
-#  else
-       return __arch__swab64(x);
-#  endif
-}
-static __inline__ __u64 __swab64p(__u64 *x)
-{
-       return __arch__swab64p(x);
-}
-static __inline__ void __swab64s(__u64 *addr)
-{
-       __arch__swab64s(addr);
-}
-#endif /* __BYTEORDER_HAS_U64__ */
-
-#if defined(__KERNEL__)
-#define swab16 __swab16
-#define swab32 __swab32
-#define swab64 __swab64
-#define swab16p __swab16p
-#define swab32p __swab32p
-#define swab64p __swab64p
-#define swab16s __swab16s
-#define swab32s __swab32s
-#define swab64s __swab64s
-#endif
-
-#endif /* _LINUX_BYTEORDER_SWAB_H */
diff --git a/xen/include/xeno/byteorder/swabb.h b/xen/include/xeno/byteorder/swabb.h
deleted file mode 100644 (file)
index d28d9a8..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-#ifndef _LINUX_BYTEORDER_SWABB_H
-#define _LINUX_BYTEORDER_SWABB_H
-
-/*
- * linux/byteorder/swabb.h
- * SWAp Bytes Bizarrely
- *     swaHHXX[ps]?(foo)
- *
- * Support for obNUXIous pdp-endian and other bizarre architectures.
- * Will Linux ever run on such ancient beasts? if not, this file
- * will be but a programming pearl. Still, it's a reminder that we
- * shouldn't be making too many assumptions when trying to be portable.
- *
- */
-
-/*
- * Meaning of the names I chose (vaxlinux people feel free to correct them):
- * swahw32     swap 16-bit half-words in a 32-bit word
- * swahb32     swap 8-bit halves of each 16-bit half-word in a 32-bit word
- *
- * No 64-bit support yet. I don't know NUXI conventions for long longs.
- * I guarantee it will be a mess when it's there, though :->
- * It will be even worse if there are conflicting 64-bit conventions.
- * Hopefully, no one ever used 64-bit objects on NUXI machines.
- *
- */
-
-#define ___swahw32(x) \
-({ \
-       __u32 __x = (x); \
-       ((__u32)( \
-               (((__u32)(__x) & (__u32)0x0000ffffUL) << 16) | \
-               (((__u32)(__x) & (__u32)0xffff0000UL) >> 16) )); \
-})
-#define ___swahb32(x) \
-({ \
-       __u32 __x = (x); \
-       ((__u32)( \
-               (((__u32)(__x) & (__u32)0x00ff00ffUL) << 8) | \
-               (((__u32)(__x) & (__u32)0xff00ff00UL) >> 8) )); \
-})
-
-#define ___constant_swahw32(x) \
-       ((__u32)( \
-               (((__u32)(x) & (__u32)0x0000ffffUL) << 16) | \
-               (((__u32)(x) & (__u32)0xffff0000UL) >> 16) ))
-#define ___constant_swahb32(x) \
-       ((__u32)( \
-               (((__u32)(x) & (__u32)0x00ff00ffUL) << 8) | \
-               (((__u32)(x) & (__u32)0xff00ff00UL) >> 8) ))
-
-/*
- * provide defaults when no architecture-specific optimization is detected
- */
-#ifndef __arch__swahw32
-#  define __arch__swahw32(x) ___swahw32(x)
-#endif
-#ifndef __arch__swahb32
-#  define __arch__swahb32(x) ___swahb32(x)
-#endif
-
-#ifndef __arch__swahw32p
-#  define __arch__swahw32p(x) __swahw32(*(x))
-#endif
-#ifndef __arch__swahb32p
-#  define __arch__swahb32p(x) __swahb32(*(x))
-#endif
-
-#ifndef __arch__swahw32s
-#  define __arch__swahw32s(x) do { *(x) = __swahw32p((x)); } while (0)
-#endif
-#ifndef __arch__swahb32s
-#  define __arch__swahb32s(x) do { *(x) = __swahb32p((x)); } while (0)
-#endif
-
-
-/*
- * Allow constant folding
- */
-#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
-#  define __swahw32(x) \
-(__builtin_constant_p((__u32)(x)) ? \
- ___swahw32((x)) : \
- __fswahw32((x)))
-#  define __swahb32(x) \
-(__builtin_constant_p((__u32)(x)) ? \
- ___swahb32((x)) : \
- __fswahb32((x)))
-#else
-#  define __swahw32(x) __fswahw32(x)
-#  define __swahb32(x) __fswahb32(x)
-#endif /* OPTIMIZE */
-
-
-static __inline__ __const__ __u32 __fswahw32(__u32 x)
-{
-       return __arch__swahw32(x);
-}
-static __inline__ __u32 __swahw32p(__u32 *x)
-{
-       return __arch__swahw32p(x);
-}
-static __inline__ void __swahw32s(__u32 *addr)
-{
-       __arch__swahw32s(addr);
-}
-
-
-static __inline__ __const__ __u32 __fswahb32(__u32 x)
-{
-       return __arch__swahb32(x);
-}
-static __inline__ __u32 __swahb32p(__u32 *x)
-{
-       return __arch__swahb32p(x);
-}
-static __inline__ void __swahb32s(__u32 *addr)
-{
-       __arch__swahb32s(addr);
-}
-
-#ifdef __BYTEORDER_HAS_U64__
-/*
- * Not supported yet
- */
-#endif /* __BYTEORDER_HAS_U64__ */
-
-#if defined(__KERNEL__)
-#define swahw32 __swahw32
-#define swahb32 __swahb32
-#define swahw32p __swahw32p
-#define swahb32p __swahb32p
-#define swahw32s __swahw32s
-#define swahb32s __swahb32s
-#endif
-
-#endif /* _LINUX_BYTEORDER_SWABB_H */
diff --git a/xen/include/xeno/cache.h b/xen/include/xeno/cache.h
deleted file mode 100644 (file)
index 73a3be7..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef __LINUX_CACHE_H
-#define __LINUX_CACHE_H
-
-#include <xeno/config.h>
-#include <asm/cache.h>
-
-#ifndef L1_CACHE_ALIGN
-#define L1_CACHE_ALIGN(x) (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1))
-#endif
-
-#ifndef SMP_CACHE_BYTES
-#define SMP_CACHE_BYTES L1_CACHE_BYTES
-#endif
-
-#ifndef ____cacheline_aligned
-#define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
-#endif
-
-#ifndef ____cacheline_aligned_in_smp
-#ifdef CONFIG_SMP
-#define ____cacheline_aligned_in_smp ____cacheline_aligned
-#else
-#define ____cacheline_aligned_in_smp
-#endif /* CONFIG_SMP */
-#endif
-
-#ifndef __cacheline_aligned
-#ifdef MODULE
-#define __cacheline_aligned ____cacheline_aligned
-#else
-#define __cacheline_aligned                                    \
-  __attribute__((__aligned__(SMP_CACHE_BYTES),                 \
-                __section__(".data.cacheline_aligned")))
-#endif
-#endif /* __cacheline_aligned */
-
-#endif /* __LINUX_CACHE_H */
diff --git a/xen/include/xeno/cdrom.h b/xen/include/xeno/cdrom.h
deleted file mode 100644 (file)
index a9cd972..0000000
+++ /dev/null
@@ -1,1067 +0,0 @@
-/*
- * -- <xeno/cdrom.h>
- * General header file for linux CD-ROM drivers 
- * Copyright (C) 1992         David Giller, rafetmad@oxy.edu
- *               1994, 1995   Eberhard Moenkeberg, emoenke@gwdg.de
- *               1996         David van Leeuwen, david@tm.tno.nl
- *               1997, 1998   Erik Andersen, andersee@debian.org
- *               1998-2000    Jens Axboe, axboe@suse.de
- */
-#ifndef        _LINUX_CDROM_H
-#define        _LINUX_CDROM_H
-
-#include <asm/byteorder.h>
-
-/*******************************************************
- * As of Linux 2.1.x, all Linux CD-ROM application programs will use this 
- * (and only this) include file.  It is my hope to provide Linux with
- * a uniform interface between software accessing CD-ROMs and the various 
- * device drivers that actually talk to the drives.  There may still be
- * 23 different kinds of strange CD-ROM drives, but at least there will 
- * now be one, and only one, Linux CD-ROM interface.
- *
- * Additionally, as of Linux 2.1.x, all Linux application programs 
- * should use the O_NONBLOCK option when opening a CD-ROM device 
- * for subsequent ioctl commands.  This allows for neat system errors 
- * like "No medium found" or "Wrong medium type" upon attempting to 
- * mount or play an empty slot, mount an audio disc, or play a data disc.
- * Generally, changing an application program to support O_NONBLOCK
- * is as easy as the following:
- *       -    drive = open("/dev/cdrom", O_RDONLY);
- *       +    drive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK);
- * It is worth the small change.
- *
- *  Patches for many common CD programs (provided by David A. van Leeuwen)
- *  can be found at:  ftp://ftp.gwdg.de/pub/linux/cdrom/drivers/cm206/
- * 
- *******************************************************/
-
-/* When a driver supports a certain function, but the cdrom drive we are 
- * using doesn't, we will return the error EDRIVE_CANT_DO_THIS.  We will 
- * borrow the "Operation not supported" error from the network folks to 
- * accomplish this.  Maybe someday we will get a more targeted error code, 
- * but this will do for now... */
-#define EDRIVE_CANT_DO_THIS  EOPNOTSUPP
-
-/*******************************************************
- * The CD-ROM IOCTL commands  -- these should be supported by 
- * all the various cdrom drivers.  For the CD-ROM ioctls, we 
- * will commandeer byte 0x53, or 'S'.
- *******************************************************/
-#define CDROMPAUSE             0x5301 /* Pause Audio Operation */ 
-#define CDROMRESUME            0x5302 /* Resume paused Audio Operation */
-#define CDROMPLAYMSF           0x5303 /* Play Audio MSF (struct cdrom_msf) */
-#define CDROMPLAYTRKIND                0x5304 /* Play Audio Track/index 
-                                           (struct cdrom_ti) */
-#define CDROMREADTOCHDR                0x5305 /* Read TOC header 
-                                           (struct cdrom_tochdr) */
-#define CDROMREADTOCENTRY      0x5306 /* Read TOC entry 
-                                           (struct cdrom_tocentry) */
-#define CDROMSTOP              0x5307 /* Stop the cdrom drive */
-#define CDROMSTART             0x5308 /* Start the cdrom drive */
-#define CDROMEJECT             0x5309 /* Ejects the cdrom media */
-#define CDROMVOLCTRL           0x530a /* Control output volume 
-                                           (struct cdrom_volctrl) */
-#define CDROMSUBCHNL           0x530b /* Read subchannel data 
-                                           (struct cdrom_subchnl) */
-#define CDROMREADMODE2         0x530c /* Read CDROM mode 2 data (2336 Bytes) 
-                                           (struct cdrom_read) */
-#define CDROMREADMODE1         0x530d /* Read CDROM mode 1 data (2048 Bytes)
-                                           (struct cdrom_read) */
-#define CDROMREADAUDIO         0x530e /* (struct cdrom_read_audio) */
-#define CDROMEJECT_SW          0x530f /* enable(1)/disable(0) auto-ejecting */
-#define CDROMMULTISESSION      0x5310 /* Obtain the start-of-last-session 
-                                           address of multi session disks 
-                                           (struct cdrom_multisession) */
-#define CDROM_GET_MCN          0x5311 /* Obtain the "Universal Product Code" 
-                                           if available (struct cdrom_mcn) */
-#define CDROM_GET_UPC          CDROM_GET_MCN  /* This one is depricated, 
-                                          but here anyway for compatability */
-#define CDROMRESET             0x5312 /* hard-reset the drive */
-#define CDROMVOLREAD           0x5313 /* Get the drive's volume setting 
-                                          (struct cdrom_volctrl) */
-#define CDROMREADRAW           0x5314  /* read data in raw mode (2352 Bytes)
-                                           (struct cdrom_read) */
-/* 
- * These ioctls are used only used in aztcd.c and optcd.c
- */
-#define CDROMREADCOOKED                0x5315  /* read data in cooked mode */
-#define CDROMSEEK              0x5316  /* seek msf address */
-  
-/*
- * This ioctl is only used by the scsi-cd driver.  
-   It is for playing audio in logical block addressing mode.
- */
-#define CDROMPLAYBLK           0x5317  /* (struct cdrom_blk) */
-
-/* 
- * These ioctls are only used in optcd.c
- */
-#define CDROMREADALL           0x5318  /* read all 2646 bytes */
-
-/* 
- * These ioctls are (now) only in ide-cd.c for controlling 
- * drive spindown time.  They should be implemented in the
- * Uniform driver, via generic packet commands, GPCMD_MODE_SELECT_10,
- * GPCMD_MODE_SENSE_10 and the GPMODE_POWER_PAGE...
- *  -Erik
- */
-#define CDROMGETSPINDOWN        0x531d
-#define CDROMSETSPINDOWN        0x531e
-
-/* 
- * These ioctls are implemented through the uniform CD-ROM driver
- * They _will_ be adopted by all CD-ROM drivers, when all the CD-ROM
- * drivers are eventually ported to the uniform CD-ROM driver interface.
- */
-#define CDROMCLOSETRAY         0x5319  /* pendant of CDROMEJECT */
-#define CDROM_SET_OPTIONS      0x5320  /* Set behavior options */
-#define CDROM_CLEAR_OPTIONS    0x5321  /* Clear behavior options */
-#define CDROM_SELECT_SPEED     0x5322  /* Set the CD-ROM speed */
-#define CDROM_SELECT_DISC      0x5323  /* Select disc (for juke-boxes) */
-#define CDROM_MEDIA_CHANGED    0x5325  /* Check is media changed  */
-#define CDROM_DRIVE_STATUS     0x5326  /* Get tray position, etc. */
-#define CDROM_DISC_STATUS      0x5327  /* Get disc type, etc. */
-#define CDROM_CHANGER_NSLOTS    0x5328  /* Get number of slots */
-#define CDROM_LOCKDOOR         0x5329  /* lock or unlock door */
-#define CDROM_DEBUG            0x5330  /* Turn debug messages on/off */
-#define CDROM_GET_CAPABILITY   0x5331  /* get capabilities */
-
-/* Note that scsi/scsi_ioctl.h also uses 0x5382 - 0x5386.
- * Future CDROM ioctls should be kept below 0x537F
- */
-
-/* This ioctl is only used by sbpcd at the moment */
-#define CDROMAUDIOBUFSIZ        0x5382 /* set the audio buffer size */
-                                       /* conflict with SCSI_IOCTL_GET_IDLUN */
-
-/* DVD-ROM Specific ioctls */
-#define DVD_READ_STRUCT                0x5390  /* Read structure */
-#define DVD_WRITE_STRUCT       0x5391  /* Write structure */
-#define DVD_AUTH               0x5392  /* Authentication */
-
-#define CDROM_SEND_PACKET      0x5393  /* send a packet to the drive */
-#define CDROM_NEXT_WRITABLE    0x5394  /* get next writable block */
-#define CDROM_LAST_WRITTEN     0x5395  /* get last block written on disc */
-
-/*******************************************************
- * CDROM IOCTL structures
- *******************************************************/
-
-/* Address in MSF format */
-struct cdrom_msf0              
-{
-       __u8    minute;
-       __u8    second;
-       __u8    frame;
-};
-
-/* Address in either MSF or logical format */
-union cdrom_addr               
-{
-       struct cdrom_msf0       msf;
-       int                     lba;
-};
-
-/* This struct is used by the CDROMPLAYMSF ioctl */ 
-struct cdrom_msf 
-{
-       __u8    cdmsf_min0;     /* start minute */
-       __u8    cdmsf_sec0;     /* start second */
-       __u8    cdmsf_frame0;   /* start frame */
-       __u8    cdmsf_min1;     /* end minute */
-       __u8    cdmsf_sec1;     /* end second */
-       __u8    cdmsf_frame1;   /* end frame */
-};
-
-/* This struct is used by the CDROMPLAYTRKIND ioctl */
-struct cdrom_ti 
-{
-       __u8    cdti_trk0;      /* start track */
-       __u8    cdti_ind0;      /* start index */
-       __u8    cdti_trk1;      /* end track */
-       __u8    cdti_ind1;      /* end index */
-};
-
-/* This struct is used by the CDROMREADTOCHDR ioctl */
-struct cdrom_tochdr    
-{
-       __u8    cdth_trk0;      /* start track */
-       __u8    cdth_trk1;      /* end track */
-};
-
-/* This struct is used by the CDROMVOLCTRL and CDROMVOLREAD ioctls */
-struct cdrom_volctrl
-{
-       __u8    channel0;
-       __u8    channel1;
-       __u8    channel2;
-       __u8    channel3;
-};
-
-/* This struct is used by the CDROMSUBCHNL ioctl */
-struct cdrom_subchnl 
-{
-       __u8    cdsc_format;
-       __u8    cdsc_audiostatus;
-       __u8    cdsc_adr:       4;
-       __u8    cdsc_ctrl:      4;
-       __u8    cdsc_trk;
-       __u8    cdsc_ind;
-       union cdrom_addr cdsc_absaddr;
-       union cdrom_addr cdsc_reladdr;
-};
-
-
-/* This struct is used by the CDROMREADTOCENTRY ioctl */
-struct cdrom_tocentry 
-{
-       __u8    cdte_track;
-       __u8    cdte_adr        :4;
-       __u8    cdte_ctrl       :4;
-       __u8    cdte_format;
-       union cdrom_addr cdte_addr;
-       __u8    cdte_datamode;
-};
-
-/* This struct is used by the CDROMREADMODE1, and CDROMREADMODE2 ioctls */
-struct cdrom_read      
-{
-       int     cdread_lba;
-       char    *cdread_bufaddr;
-       int     cdread_buflen;
-};
-
-/* This struct is used by the CDROMREADAUDIO ioctl */
-struct cdrom_read_audio
-{
-       union cdrom_addr addr; /* frame address */
-       __u8 addr_format;    /* CDROM_LBA or CDROM_MSF */
-       int nframes;           /* number of 2352-byte-frames to read at once */
-       __u8 *buf;           /* frame buffer (size: nframes*2352 bytes) */
-};
-
-/* This struct is used with the CDROMMULTISESSION ioctl */
-struct cdrom_multisession
-{
-       union cdrom_addr addr; /* frame address: start-of-last-session 
-                                  (not the new "frame 16"!).  Only valid
-                                  if the "xa_flag" is true. */
-       __u8 xa_flag;        /* 1: "is XA disk" */
-       __u8 addr_format;    /* CDROM_LBA or CDROM_MSF */
-};
-
-/* This struct is used with the CDROM_GET_MCN ioctl.  
- * Very few audio discs actually have Universal Product Code information, 
- * which should just be the Medium Catalog Number on the box.  Also note 
- * that the way the codeis written on CD is _not_ uniform across all discs!
- */  
-struct cdrom_mcn 
-{
-  __u8 medium_catalog_number[14]; /* 13 ASCII digits, null-terminated */
-};
-
-/* This is used by the CDROMPLAYBLK ioctl */
-struct cdrom_blk 
-{
-       unsigned from;
-       unsigned short len;
-};
-
-#define CDROM_PACKET_SIZE      12
-
-#define CGC_DATA_UNKNOWN       0
-#define CGC_DATA_WRITE         1
-#define CGC_DATA_READ          2
-#define CGC_DATA_NONE          3
-
-/* for CDROM_PACKET_COMMAND ioctl */
-struct cdrom_generic_command
-{
-       unsigned char           cmd[CDROM_PACKET_SIZE];
-       unsigned char           *buffer;
-       unsigned int            buflen;
-       int                     stat;
-       struct request_sense    *sense;
-       unsigned char           data_direction;
-       int                     quiet;
-       int                     timeout;
-       void                    *reserved[1];
-};
-
-
-/*
- * A CD-ROM physical sector size is 2048, 2052, 2056, 2324, 2332, 2336, 
- * 2340, or 2352 bytes long.  
-
-*         Sector types of the standard CD-ROM data formats:
- *
- * format   sector type               user data size (bytes)
- * -----------------------------------------------------------------------------
- *   1     (Red Book)    CD-DA          2352    (CD_FRAMESIZE_RAW)
- *   2     (Yellow Book) Mode1 Form1    2048    (CD_FRAMESIZE)
- *   3     (Yellow Book) Mode1 Form2    2336    (CD_FRAMESIZE_RAW0)
- *   4     (Green Book)  Mode2 Form1    2048    (CD_FRAMESIZE)
- *   5     (Green Book)  Mode2 Form2    2328    (2324+4 spare bytes)
- *
- *
- *       The layout of the standard CD-ROM data formats:
- * -----------------------------------------------------------------------------
- * - audio (red):                  | audio_sample_bytes |
- *                                 |        2352        |
- *
- * - data (yellow, mode1):         | sync - head - data - EDC - zero - ECC |
- *                                 |  12  -   4  - 2048 -  4  -   8  - 276 |
- *
- * - data (yellow, mode2):         | sync - head - data |
- *                                 |  12  -   4  - 2336 |
- *
- * - XA data (green, mode2 form1): | sync - head - sub - data - EDC - ECC |
- *                                 |  12  -   4  -  8  - 2048 -  4  - 276 |
- *
- * - XA data (green, mode2 form2): | sync - head - sub - data - Spare |
- *                                 |  12  -   4  -  8  - 2324 -  4    |
- *
- */
-
-/* Some generally useful CD-ROM information -- mostly based on the above */
-#define CD_MINS              74 /* max. minutes per CD, not really a limit */
-#define CD_SECS              60 /* seconds per minute */
-#define CD_FRAMES            75 /* frames per second */
-#define CD_SYNC_SIZE         12 /* 12 sync bytes per raw data frame */
-#define CD_MSF_OFFSET       150 /* MSF numbering offset of first frame */
-#define CD_CHUNK_SIZE        24 /* lowest-level "data bytes piece" */
-#define CD_NUM_OF_CHUNKS     98 /* chunks per frame */
-#define CD_FRAMESIZE_SUB     96 /* subchannel data "frame" size */
-#define CD_HEAD_SIZE          4 /* header (address) bytes per raw data frame */
-#define CD_SUBHEAD_SIZE       8 /* subheader bytes per raw XA data frame */
-#define CD_EDC_SIZE           4 /* bytes EDC per most raw data frame types */
-#define CD_ZERO_SIZE          8 /* bytes zero per yellow book mode 1 frame */
-#define CD_ECC_SIZE         276 /* bytes ECC per most raw data frame types */
-#define CD_FRAMESIZE       2048 /* bytes per frame, "cooked" mode */
-#define CD_FRAMESIZE_RAW   2352 /* bytes per frame, "raw" mode */
-#define CD_FRAMESIZE_RAWER 2646 /* The maximum possible returned bytes */ 
-/* most drives don't deliver everything: */
-#define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE) /*2340*/
-#define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE) /*2336*/
-
-#define CD_XA_HEAD        (CD_HEAD_SIZE+CD_SUBHEAD_SIZE) /* "before data" part of raw XA frame */
-#define CD_XA_TAIL        (CD_EDC_SIZE+CD_ECC_SIZE) /* "after data" part of raw XA frame */
-#define CD_XA_SYNC_HEAD   (CD_SYNC_SIZE+CD_XA_HEAD) /* sync bytes + header of XA frame */
-
-/* CD-ROM address types (cdrom_tocentry.cdte_format) */
-#define        CDROM_LBA 0x01 /* "logical block": first frame is #0 */
-#define        CDROM_MSF 0x02 /* "minute-second-frame": binary, not bcd here! */
-
-/* bit to tell whether track is data or audio (cdrom_tocentry.cdte_ctrl) */
-#define        CDROM_DATA_TRACK        0x04
-
-/* The leadout track is always 0xAA, regardless of # of tracks on disc */
-#define        CDROM_LEADOUT           0xAA
-
-/* audio states (from SCSI-2, but seen with other drives, too) */
-#define        CDROM_AUDIO_INVALID     0x00    /* audio status not supported */
-#define        CDROM_AUDIO_PLAY        0x11    /* audio play operation in progress */
-#define        CDROM_AUDIO_PAUSED      0x12    /* audio play operation paused */
-#define        CDROM_AUDIO_COMPLETED   0x13    /* audio play successfully completed */
-#define        CDROM_AUDIO_ERROR       0x14    /* audio play stopped due to error */
-#define        CDROM_AUDIO_NO_STATUS   0x15    /* no current audio status to return */
-
-/* capability flags used with the uniform CD-ROM driver */ 
-#define CDC_CLOSE_TRAY         0x1     /* caddy systems _can't_ close */
-#define CDC_OPEN_TRAY          0x2     /* but _can_ eject.  */
-#define CDC_LOCK               0x4     /* disable manual eject */
-#define CDC_SELECT_SPEED       0x8     /* programmable speed */
-#define CDC_SELECT_DISC                0x10    /* select disc from juke-box */
-#define CDC_MULTI_SESSION      0x20    /* read sessions>1 */
-#define CDC_MCN                        0x40    /* Medium Catalog Number */
-#define CDC_MEDIA_CHANGED      0x80    /* media changed */
-#define CDC_PLAY_AUDIO         0x100   /* audio functions */
-#define CDC_RESET               0x200   /* hard reset device */
-#define CDC_IOCTLS              0x400   /* driver has non-standard ioctls */
-#define CDC_DRIVE_STATUS        0x800   /* driver implements drive status */
-#define CDC_GENERIC_PACKET     0x1000  /* driver implements generic packets */
-#define CDC_CD_R               0x2000  /* drive is a CD-R */
-#define CDC_CD_RW              0x4000  /* drive is a CD-RW */
-#define CDC_DVD                        0x8000  /* drive is a DVD */
-#define CDC_DVD_R              0x10000 /* drive can write DVD-R */
-#define CDC_DVD_RAM            0x20000 /* drive can write DVD-RAM */
-
-/* drive status possibilities returned by CDROM_DRIVE_STATUS ioctl */
-#define CDS_NO_INFO            0       /* if not implemented */
-#define CDS_NO_DISC            1
-#define CDS_TRAY_OPEN          2
-#define CDS_DRIVE_NOT_READY    3
-#define CDS_DISC_OK            4
-
-/* return values for the CDROM_DISC_STATUS ioctl */
-/* can also return CDS_NO_[INFO|DISC], from above */
-#define CDS_AUDIO              100
-#define CDS_DATA_1             101
-#define CDS_DATA_2             102
-#define CDS_XA_2_1             103
-#define CDS_XA_2_2             104
-#define CDS_MIXED              105
-
-/* User-configurable behavior options for the uniform CD-ROM driver */
-#define CDO_AUTO_CLOSE         0x1     /* close tray on first open() */
-#define CDO_AUTO_EJECT         0x2     /* open tray on last release() */
-#define CDO_USE_FFLAGS         0x4     /* use O_NONBLOCK information on open */
-#define CDO_LOCK               0x8     /* lock tray on open files */
-#define CDO_CHECK_TYPE         0x10    /* check type on open for data */
-
-/* Special codes used when specifying changer slots. */
-#define CDSL_NONE              ((int) (~0U>>1)-1)
-#define CDSL_CURRENT           ((int) (~0U>>1))
-
-/* For partition based multisession access. IDE can handle 64 partitions
- * per drive - SCSI CD-ROM's use minors to differentiate between the
- * various drives, so we can't do multisessions the same way there.
- * Use the -o session=x option to mount on them.
- */
-#define CD_PART_MAX            64
-#define CD_PART_MASK           (CD_PART_MAX - 1)
-
-/*********************************************************************
- * Generic Packet commands, MMC commands, and such
- *********************************************************************/
-
- /* The generic packet command opcodes for CD/DVD Logical Units,
- * From Table 57 of the SFF8090 Ver. 3 (Mt. Fuji) draft standard. */
-#define GPCMD_BLANK                        0xa1
-#define GPCMD_CLOSE_TRACK                  0x5b
-#define GPCMD_FLUSH_CACHE                  0x35
-#define GPCMD_FORMAT_UNIT                  0x04
-#define GPCMD_GET_CONFIGURATION                    0x46
-#define GPCMD_GET_EVENT_STATUS_NOTIFICATION 0x4a
-#define GPCMD_GET_PERFORMANCE              0xac
-#define GPCMD_INQUIRY                      0x12
-#define GPCMD_LOAD_UNLOAD                  0xa6
-#define GPCMD_MECHANISM_STATUS             0xbd
-#define GPCMD_MODE_SELECT_10               0x55
-#define GPCMD_MODE_SENSE_10                0x5a
-#define GPCMD_PAUSE_RESUME                 0x4b
-#define GPCMD_PLAY_AUDIO_10                0x45
-#define GPCMD_PLAY_AUDIO_MSF               0x47
-#define GPCMD_PLAY_AUDIO_TI                0x48
-#define GPCMD_PLAY_CD                      0xbc
-#define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL  0x1e
-#define GPCMD_READ_10                      0x28
-#define GPCMD_READ_12                      0xa8
-#define GPCMD_READ_CDVD_CAPACITY           0x25
-#define GPCMD_READ_CD                      0xbe
-#define GPCMD_READ_CD_MSF                  0xb9
-#define GPCMD_READ_DISC_INFO               0x51
-#define GPCMD_READ_DVD_STRUCTURE           0xad
-#define GPCMD_READ_FORMAT_CAPACITIES       0x23
-#define GPCMD_READ_HEADER                  0x44
-#define GPCMD_READ_TRACK_RZONE_INFO        0x52
-#define GPCMD_READ_SUBCHANNEL              0x42
-#define GPCMD_READ_TOC_PMA_ATIP                    0x43
-#define GPCMD_REPAIR_RZONE_TRACK           0x58
-#define GPCMD_REPORT_KEY                   0xa4
-#define GPCMD_REQUEST_SENSE                0x03
-#define GPCMD_RESERVE_RZONE_TRACK          0x53
-#define GPCMD_SCAN                         0xba
-#define GPCMD_SEEK                         0x2b
-#define GPCMD_SEND_DVD_STRUCTURE           0xad
-#define GPCMD_SEND_EVENT                   0xa2
-#define GPCMD_SEND_KEY                     0xa3
-#define GPCMD_SEND_OPC                     0x54
-#define GPCMD_SET_READ_AHEAD               0xa7
-#define GPCMD_SET_STREAMING                0xb6
-#define GPCMD_START_STOP_UNIT              0x1b
-#define GPCMD_STOP_PLAY_SCAN               0x4e
-#define GPCMD_TEST_UNIT_READY              0x00
-#define GPCMD_VERIFY_10                            0x2f
-#define GPCMD_WRITE_10                     0x2a
-#define GPCMD_WRITE_AND_VERIFY_10          0x2e
-/* This is listed as optional in ATAPI 2.6, but is (curiously) 
- * missing from Mt. Fuji, Table 57.  It _is_ mentioned in Mt. Fuji
- * Table 377 as an MMC command for SCSi devices though...  Most ATAPI
- * drives support it. */
-#define GPCMD_SET_SPEED                            0xbb
-/* This seems to be a SCSI specific CD-ROM opcode 
- * to play data at track/index */
-#define GPCMD_PLAYAUDIO_TI                 0x48
-/*
- * From MS Media Status Notification Support Specification. For
- * older drives only.
- */
-#define GPCMD_GET_MEDIA_STATUS             0xda
-
-/* Mode page codes for mode sense/set */
-#define GPMODE_R_W_ERROR_PAGE          0x01
-#define GPMODE_WRITE_PARMS_PAGE                0x05
-#define GPMODE_AUDIO_CTL_PAGE          0x0e
-#define GPMODE_POWER_PAGE              0x1a
-#define GPMODE_FAULT_FAIL_PAGE         0x1c
-#define GPMODE_TO_PROTECT_PAGE         0x1d
-#define GPMODE_CAPABILITIES_PAGE       0x2a
-#define GPMODE_ALL_PAGES               0x3f
-/* Not in Mt. Fuji, but in ATAPI 2.6 -- depricated now in favor
- * of MODE_SENSE_POWER_PAGE */
-#define GPMODE_CDROM_PAGE              0x0d
-
-
-
-/* DVD struct types */
-#define DVD_STRUCT_PHYSICAL    0x00
-#define DVD_STRUCT_COPYRIGHT   0x01
-#define DVD_STRUCT_DISCKEY     0x02
-#define DVD_STRUCT_BCA         0x03
-#define DVD_STRUCT_MANUFACT    0x04
-
-struct dvd_layer {
-       __u8 book_version       : 4;
-       __u8 book_type          : 4;
-       __u8 min_rate           : 4;
-       __u8 disc_size          : 4;
-       __u8 layer_type         : 4;
-       __u8 track_path         : 1;
-       __u8 nlayers            : 2;
-       __u8 track_density      : 4;
-       __u8 linear_density     : 4;
-       __u8 bca                : 1;
-       __u32 start_sector;
-       __u32 end_sector;
-       __u32 end_sector_l0;
-};
-
-#define DVD_LAYERS     4
-
-struct dvd_physical {
-       __u8 type;
-       __u8 layer_num;
-       struct dvd_layer layer[DVD_LAYERS];
-};
-
-struct dvd_copyright {
-       __u8 type;
-
-       __u8 layer_num;
-       __u8 cpst;
-       __u8 rmi;
-};
-
-struct dvd_disckey {
-       __u8 type;
-
-       unsigned agid           : 2;
-       __u8 value[2048];
-};
-
-struct dvd_bca {
-       __u8 type;
-
-       int len;
-       __u8 value[188];
-};
-
-struct dvd_manufact {
-       __u8 type;
-
-       __u8 layer_num;
-       int len;
-       __u8 value[2048];
-};
-
-typedef union {
-       __u8 type;
-
-       struct dvd_physical     physical;
-       struct dvd_copyright    copyright;
-       struct dvd_disckey      disckey;
-       struct dvd_bca          bca;
-       struct dvd_manufact     manufact;
-} dvd_struct;
-
-/*
- * DVD authentication ioctl
- */
-
-/* Authentication states */
-#define DVD_LU_SEND_AGID       0
-#define DVD_HOST_SEND_CHALLENGE        1
-#define DVD_LU_SEND_KEY1       2
-#define DVD_LU_SEND_CHALLENGE  3
-#define DVD_HOST_SEND_KEY2     4
-
-/* Termination states */
-#define DVD_AUTH_ESTABLISHED   5
-#define DVD_AUTH_FAILURE       6
-
-/* Other functions */
-#define DVD_LU_SEND_TITLE_KEY  7
-#define DVD_LU_SEND_ASF                8
-#define DVD_INVALIDATE_AGID    9
-#define DVD_LU_SEND_RPC_STATE  10
-#define DVD_HOST_SEND_RPC_STATE        11
-
-/* State data */
-typedef __u8 dvd_key[5];               /* 40-bit value, MSB is first elem. */
-typedef __u8 dvd_challenge[10];        /* 80-bit value, MSB is first elem. */
-
-struct dvd_lu_send_agid {
-       __u8 type;
-       unsigned agid           : 2;
-};
-
-struct dvd_host_send_challenge {
-       __u8 type;
-       unsigned agid           : 2;
-
-       dvd_challenge chal;
-};
-
-struct dvd_send_key {
-       __u8 type;
-       unsigned agid           : 2;
-
-       dvd_key key;
-};
-
-struct dvd_lu_send_challenge {
-       __u8 type;
-       unsigned agid           : 2;
-
-       dvd_challenge chal;
-};
-
-#define DVD_CPM_NO_COPYRIGHT   0
-#define DVD_CPM_COPYRIGHTED    1
-
-#define DVD_CP_SEC_NONE                0
-#define DVD_CP_SEC_EXIST       1
-
-#define DVD_CGMS_UNRESTRICTED  0
-#define DVD_CGMS_SINGLE                2
-#define DVD_CGMS_RESTRICTED    3
-
-struct dvd_lu_send_title_key {
-       __u8 type;
-       unsigned agid           : 2;
-
-       dvd_key title_key;
-       int lba;
-       unsigned cpm            : 1;
-       unsigned cp_sec         : 1;
-       unsigned cgms           : 2;
-};
-
-struct dvd_lu_send_asf {
-       __u8 type;
-       unsigned agid           : 2;
-
-       unsigned asf            : 1;
-};
-
-struct dvd_host_send_rpcstate {
-       __u8 type;
-       __u8 pdrc;
-};
-
-struct dvd_lu_send_rpcstate {
-       __u8 type               : 2;
-       __u8 vra                : 3;
-       __u8 ucca               : 3;
-       __u8 region_mask;
-       __u8 rpc_scheme;
-};
-
-typedef union {
-       __u8 type;
-
-       struct dvd_lu_send_agid         lsa;
-       struct dvd_host_send_challenge  hsc;
-       struct dvd_send_key             lsk;
-       struct dvd_lu_send_challenge    lsc;
-       struct dvd_send_key             hsk;
-       struct dvd_lu_send_title_key    lstk;
-       struct dvd_lu_send_asf          lsasf;
-       struct dvd_host_send_rpcstate   hrpcs;
-       struct dvd_lu_send_rpcstate     lrpcs;
-} dvd_authinfo;
-
-struct request_sense {
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 valid              : 1;
-       __u8 error_code         : 7;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8 error_code         : 7;
-       __u8 valid              : 1;
-#endif
-       __u8 segment_number;
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 reserved1          : 2;
-       __u8 ili                : 1;
-       __u8 reserved2          : 1;
-       __u8 sense_key          : 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8 sense_key          : 4;
-       __u8 reserved2          : 1;
-       __u8 ili                : 1;
-       __u8 reserved1          : 2;
-#endif
-       __u8 information[4];
-       __u8 add_sense_len;
-       __u8 command_info[4];
-       __u8 asc;
-       __u8 ascq;
-       __u8 fruc;
-       __u8 sks[3];
-       __u8 asb[46];
-};
-
-#ifdef __KERNEL__
-#if 0
-#include <xeno/devfs_fs_kernel.h>
-#else
-#include <xeno/kdev_t.h>
-#endif
-
-struct cdrom_write_settings {
-       unsigned char fpacket;          /* fixed/variable packets */
-       unsigned long packet_size;      /* write out this number of packets */
-       unsigned long nwa;              /* next writeable address */
-       unsigned char writeable;        /* cdrom is writeable */
-};
-
-/* Uniform cdrom data structures for cdrom.c */
-struct cdrom_device_info {
-       struct cdrom_device_ops  *ops;  /* link to device_ops */
-       struct cdrom_device_info *next; /* next device_info for this major */
-       void *handle;                   /* driver-dependent data */
-#if 0
-       devfs_handle_t de;              /* real driver should create this  */
-#endif
-       int number;                     /* generic driver updates this  */
-/* specifications */
-        kdev_t dev;                    /* device number */
-       int mask;                       /* mask of capability: disables them */
-       int speed;                      /* maximum speed for reading data */
-       int capacity;                   /* number of discs in jukebox */
-/* device-related storage */
-       int options             : 30;   /* options flags */
-       unsigned mc_flags       : 2;    /* media change buffer flags */
-       int use_count;                  /* number of times device opened */
-       char name[20];                  /* name of the device type */
-/* per-device flags */
-        __u8 sanyo_slot                : 2;    /* Sanyo 3 CD changer support */
-        __u8 reserved          : 6;    /* not used yet */
-       struct cdrom_write_settings write;
-};
-
-struct cdrom_device_ops {
-/* routines */
-       int (*open) (struct cdrom_device_info *, int);
-       void (*release) (struct cdrom_device_info *);
-       int (*drive_status) (struct cdrom_device_info *, int);
-       int (*media_changed) (struct cdrom_device_info *, int);
-       int (*tray_move) (struct cdrom_device_info *, int);
-       int (*lock_door) (struct cdrom_device_info *, int);
-       int (*select_speed) (struct cdrom_device_info *, int);
-       int (*select_disc) (struct cdrom_device_info *, int);
-       int (*get_last_session) (struct cdrom_device_info *,
-                                struct cdrom_multisession *);
-       int (*get_mcn) (struct cdrom_device_info *,
-                       struct cdrom_mcn *);
-       /* hard reset device */
-       int (*reset) (struct cdrom_device_info *);
-       /* play stuff */
-       int (*audio_ioctl) (struct cdrom_device_info *,unsigned int, void *);
-       /* dev-specific */
-       int (*dev_ioctl) (struct cdrom_device_info *,
-                         unsigned int, unsigned long);
-/* driver specifications */
-       const int capability;   /* capability flags */
-       int n_minors;           /* number of active minor devices */
-       /* handle uniform packets for scsi type devices (scsi,atapi) */
-       int (*generic_packet) (struct cdrom_device_info *,
-                              struct cdrom_generic_command *);
-};
-
-/* the general block_device operations structure: */
-#include <xeno/blkdev.h> /* XXX SMH: pull in wafer thin file and inode defns */
-extern int cdrom_open(struct inode *, struct file *);
-extern int cdrom_release(struct inode *, struct file *);
-extern int cdrom_ioctl(struct inode *, struct file *, unsigned, unsigned long);
-extern int cdrom_media_changed(kdev_t);
-
-extern int register_cdrom(struct cdrom_device_info *cdi);
-extern int unregister_cdrom(struct cdrom_device_info *cdi);
-
-#if 0
-static inline void devfs_plain_cdrom(struct cdrom_device_info *cdi,
-                               struct block_device_operations *ops)
-{
-       char vname[23];
-
-       sprintf (vname, "cdroms/cdrom%d", cdi->number);
-       cdi->de = devfs_register (NULL, vname, DEVFS_FL_DEFAULT,
-                                   MAJOR (cdi->dev), MINOR (cdi->dev),
-                                   S_IFBLK | S_IRUGO | S_IWUGO,
-                                   ops, NULL);
-}
-#endif
-
-typedef struct {
-    int data;
-    int audio;
-    int cdi;
-    int xa;
-    long error;
-} tracktype;
-
-extern void cdrom_count_tracks(struct cdrom_device_info *cdi,tracktype* tracks);
-extern int cdrom_get_next_writable(kdev_t dev, long *next_writable);
-extern int cdrom_get_last_written(kdev_t dev, long *last_written);
-extern int cdrom_number_of_slots(struct cdrom_device_info *cdi);
-extern int cdrom_select_disc(struct cdrom_device_info *cdi, int slot);
-extern int cdrom_mode_select(struct cdrom_device_info *cdi,
-                            struct cdrom_generic_command *cgc);
-extern int cdrom_mode_sense(struct cdrom_device_info *cdi,
-                           struct cdrom_generic_command *cgc,
-                           int page_code, int page_control);
-extern void init_cdrom_command(struct cdrom_generic_command *cgc,
-                              void *buffer, int len, int type);
-extern struct cdrom_device_info *cdrom_find_device(kdev_t dev);
-
-typedef struct {
-       __u16 disc_information_length;
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 reserved1                  : 3;
-        __u8 erasable                  : 1;
-        __u8 border_status             : 2;
-        __u8 disc_status               : 2;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-        __u8 disc_status               : 2;
-        __u8 border_status             : 2;
-        __u8 erasable                  : 1;
-       __u8 reserved1                  : 3;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-       __u8 n_first_track;
-       __u8 n_sessions_lsb;
-       __u8 first_track_lsb;
-       __u8 last_track_lsb;
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 did_v                      : 1;
-        __u8 dbc_v                     : 1;
-        __u8 uru                       : 1;
-        __u8 reserved2                 : 5;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-        __u8 reserved2                 : 5;
-        __u8 uru                       : 1;
-        __u8 dbc_v                     : 1;
-       __u8 did_v                      : 1;
-#endif
-       __u8 disc_type;
-       __u8 n_sessions_msb;
-       __u8 first_track_msb;
-       __u8 last_track_msb;
-       __u32 disc_id;
-       __u32 lead_in;
-       __u32 lead_out;
-       __u8 disc_bar_code[8];
-       __u8 reserved3;
-       __u8 n_opc;
-} disc_information;
-
-typedef struct {
-       __u16 track_information_length;
-       __u8 track_lsb;
-       __u8 session_lsb;
-       __u8 reserved1;
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 reserved2                  : 2;
-        __u8 damage                    : 1;
-        __u8 copy                      : 1;
-        __u8 track_mode                        : 4;
-       __u8 rt                         : 1;
-       __u8 blank                      : 1;
-       __u8 packet                     : 1;
-       __u8 fp                         : 1;
-       __u8 data_mode                  : 4;
-       __u8 reserved3                  : 6;
-       __u8 lra_v                      : 1;
-       __u8 nwa_v                      : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-        __u8 track_mode                        : 4;
-        __u8 copy                      : 1;
-        __u8 damage                    : 1;
-       __u8 reserved2                  : 2;
-       __u8 data_mode                  : 4;
-       __u8 fp                         : 1;
-       __u8 packet                     : 1;
-       __u8 blank                      : 1;
-       __u8 rt                         : 1;
-       __u8 nwa_v                      : 1;
-       __u8 lra_v                      : 1;
-       __u8 reserved3                  : 6;
-#endif
-       __u32 track_start;
-       __u32 next_writable;
-       __u32 free_blocks;
-       __u32 fixed_packet_size;
-       __u32 track_size;
-       __u32 last_rec_address;
-} track_information;
-
-extern int cdrom_get_disc_info(kdev_t dev, disc_information *di);
-extern int cdrom_get_track_info(kdev_t dev, __u16 track, __u8 type,
-                               track_information *ti);
-
-/* The SCSI spec says there could be 256 slots. */
-#define CDROM_MAX_SLOTS        256
-
-struct cdrom_mechstat_header {
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 fault         : 1;
-       __u8 changer_state : 2;
-       __u8 curslot       : 5;
-       __u8 mech_state    : 3;
-       __u8 door_open     : 1;
-       __u8 reserved1     : 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8 curslot       : 5;
-       __u8 changer_state : 2;
-       __u8 fault         : 1;
-       __u8 reserved1     : 4;
-       __u8 door_open     : 1;
-       __u8 mech_state    : 3;
-#endif
-       __u8     curlba[3];
-       __u8     nslots;
-       __u16 slot_tablelen;
-};
-
-struct cdrom_slot {
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 disc_present : 1;
-       __u8 reserved1    : 6;
-       __u8 change       : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8 change       : 1;
-       __u8 reserved1    : 6;
-       __u8 disc_present : 1;
-#endif
-       __u8 reserved2[3];
-};
-
-struct cdrom_changer_info {
-       struct cdrom_mechstat_header hdr;
-       struct cdrom_slot slots[CDROM_MAX_SLOTS];
-};
-
-typedef enum {
-       mechtype_caddy = 0,
-       mechtype_tray  = 1,
-       mechtype_popup = 2,
-       mechtype_individual_changer = 4,
-       mechtype_cartridge_changer  = 5
-} mechtype_t;
-
-struct mode_page_header {
-       __u16 mode_data_length;
-       __u8 medium_type;
-       __u8 reserved1;
-       __u8 reserved2;
-       __u8 reserved3;
-       __u16 desc_length;
-};
-
-typedef struct {
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 ps                 : 1;
-       __u8 reserved1          : 1;
-       __u8 page_code          : 6;
-        __u8 page_length;
-       __u8 reserved2          : 1;
-       __u8 bufe               : 1;
-       __u8 ls_v               : 1;
-       __u8 test_write         : 1;
-        __u8 write_type                : 4;
-       __u8 multi_session      : 2; /* or border, DVD */
-       __u8 fp                 : 1;
-       __u8 copy               : 1;
-       __u8 track_mode         : 4;
-       __u8 reserved3          : 4;
-       __u8 data_block_type    : 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8 page_code          : 6;
-       __u8 reserved1          : 1;
-       __u8 ps                 : 1;
-        __u8 page_length;
-        __u8 write_type                : 4;
-       __u8 test_write         : 1;
-       __u8 ls_v               : 1;
-       __u8 bufe               : 1;
-       __u8 reserved2          : 1;
-       __u8 track_mode         : 4;
-       __u8 copy               : 1;
-       __u8 fp                 : 1;
-       __u8 multi_session      : 2; /* or border, DVD */
-       __u8 data_block_type    : 4;
-       __u8 reserved3          : 4;
-#endif
-       __u8 link_size;
-       __u8 reserved4;
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 reserved5          : 2;
-       __u8 app_code           : 6;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8 app_code           : 6;
-       __u8 reserved5          : 2;
-#endif
-       __u8 session_format;
-       __u8 reserved6;
-       __u32 packet_size;
-       __u16 audio_pause;
-       __u8 mcn[16];
-       __u8 isrc[16];
-       __u8 subhdr0;
-       __u8 subhdr1;
-       __u8 subhdr2;
-       __u8 subhdr3;
-} __attribute__((packed)) write_param_page;
-
-struct modesel_head
-{
-       __u8    reserved1;
-       __u8    medium;
-       __u8    reserved2;
-       __u8    block_desc_length;
-       __u8    density;
-       __u8    number_of_blocks_hi;
-       __u8    number_of_blocks_med;
-       __u8    number_of_blocks_lo;
-       __u8    reserved3;
-       __u8    block_length_hi;
-       __u8    block_length_med;
-       __u8    block_length_lo;
-};
-
-typedef struct {
-       __u16 report_key_length;
-       __u8 reserved1;
-       __u8 reserved2;
-#if defined(__BIG_ENDIAN_BITFIELD)
-       __u8 type_code                  : 2;
-       __u8 vra                        : 3;
-       __u8 ucca                       : 3;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8 ucca                       : 3;
-       __u8 vra                        : 3;
-       __u8 type_code                  : 2;
-#endif
-       __u8 region_mask;
-       __u8 rpc_scheme;
-       __u8 reserved3;
-} rpc_state_t;
-
-#endif  /* End of kernel only stuff */ 
-
-#endif  /* _LINUX_CDROM_H */
diff --git a/xen/include/xeno/compiler.h b/xen/include/xeno/compiler.h
deleted file mode 100644 (file)
index 05205c7..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef __LINUX_COMPILER_H
-#define __LINUX_COMPILER_H
-
-/* Somewhere in the middle of the GCC 2.96 development cycle, we implemented
-   a mechanism by which the user can annotate likely branch directions and
-   expect the blocks to be reordered appropriately.  Define __builtin_expect
-   to nothing for earlier compilers.  */
-
-#if __GNUC__ == 2 && __GNUC_MINOR__ < 96
-#define __builtin_expect(x, expected_value) (x)
-#endif
-
-#define likely(x)      __builtin_expect((x),1)
-#define unlikely(x)    __builtin_expect((x),0)
-
-#endif /* __LINUX_COMPILER_H */
diff --git a/xen/include/xeno/config.h b/xen/include/xeno/config.h
deleted file mode 100644 (file)
index 2fd3b19..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/******************************************************************************
- * config.h
- * 
- * A Linux-style configuration list.
- */
-
-#ifndef __XENO_CONFIG_H__
-#define __XENO_CONFIG_H__
-
-#include <asm/config.h>
-
-/* syslog levels ==> nothing! */
-#define KERN_NOTICE  ""
-#define KERN_WARNING ""
-#define KERN_DEBUG   ""
-#define KERN_INFO    ""
-#define KERN_ERR     ""
-#define KERN_CRIT    ""
-#define KERN_EMERG   ""
-#define KERN_ALERT   ""
-
-#define offsetof(_p,_f) ((unsigned long)&(((_p *)0)->_f))
-#define struct_cpy(_x,_y) (memcpy((_x),(_y),sizeof(*(_x))))
-
-#define dev_probe_lock() ((void)0)
-#define dev_probe_unlock() ((void)0)
-
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
-#define capable(_c) 0
-
-#ifndef NDEBUG
-#define DPRINTK(_f, _a...) printk("(file=%s, line=%d) " _f, \
-                           __FILE__ , __LINE__ , ## _a )
-#else
-#define DPRINTK(_f, _a...) ((void)0)
-#endif
-
-#ifndef __ASSEMBLY__
-#include <xeno/compiler.h>
-extern unsigned int opt_ser_baud;
-#define SERIAL_ENABLED (opt_ser_baud != 0)
-#endif
-
-#endif /* __XENO_CONFIG_H__ */
diff --git a/xen/include/xeno/console.h b/xen/include/xeno/console.h
deleted file mode 100644 (file)
index 212199d..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/******************************************************************************
- * xeno/console.h
- * 
- * Xen header file concerning console access.
- * 
- * Copyright (c) 2003 James Scott, Intel Research Cambridge
- */
-
-#ifndef __CONSOLE_H__
-#define __CONSOLE_H__
-
-#include <xeno/spinlock.h>
-
-extern spinlock_t console_lock;
-
-/*
- * Ownership of console --- currently hardwired to dom0. This is used to see 
- * who gets the PS/2 keyboard/mouse events
- */
-#define CONSOLE_ISOWNER(p) (p->domain == 0) 
-#define CONSOLE_OWNER      (find_domain_by_id(0))
-
-void set_printk_prefix(const char *prefix);
-
-#define CONSOLE_RING_CLEAR 1
-long read_console_ring(unsigned long, unsigned int, unsigned int);
-
-void init_console(void);
-void console_endboot(int disable_vga);
-
-#endif
diff --git a/xen/include/xeno/crc32.h b/xen/include/xeno/crc32.h
deleted file mode 100644 (file)
index ae8852f..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * crc32.h for early Linux 2.4.19pre kernel inclusion
- * This defines ether_crc_le() and ether_crc() as inline functions
- * This is slated to change to using the library crc32 functions
- * as kernel 2.5.2 included at some future date.
- */
-#ifndef _LINUX_CRC32_H
-#define _LINUX_CRC32_H
-
-#include <xeno/types.h>
-
-/* The little-endian AUTODIN II ethernet CRC calculation.
-   N.B. Do not use for bulk data, use a table-based routine instead.
-   This is common code and should be moved to net/core/crc.c */
-static unsigned const ethernet_polynomial_le = 0xedb88320U;
-static inline unsigned ether_crc_le(int length, unsigned char *data)
-{
-       unsigned int crc = 0xffffffff;  /* Initial value. */
-       while(--length >= 0) {
-               unsigned char current_octet = *data++;
-               int bit;
-               for (bit = 8; --bit >= 0; current_octet >>= 1) {
-                       if ((crc ^ current_octet) & 1) {
-                               crc >>= 1;
-                               crc ^= ethernet_polynomial_le;
-                       } else
-                               crc >>= 1;
-               }
-       }
-       return crc;
-}
-
-static unsigned const ethernet_polynomial = 0x04c11db7U;
-static inline u32 ether_crc(int length, unsigned char *data)
-{
-       int crc = -1;
-       while (--length >= 0) {
-               unsigned char current_octet = *data++;
-               int bit;
-               for (bit = 0; bit < 8; bit++, current_octet >>= 1) {
-                       crc = (crc << 1) ^
-                               ((crc < 0) ^ (current_octet & 1) ?
-                                ethernet_polynomial : 0);
-               }
-       }
-       return crc;
-}
-
-#endif /* _LINUX_CRC32_H */
diff --git a/xen/include/xeno/ctype.h b/xen/include/xeno/ctype.h
deleted file mode 100644 (file)
index afa3639..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef _LINUX_CTYPE_H
-#define _LINUX_CTYPE_H
-
-/*
- * NOTE! This ctype does not handle EOF like the standard C
- * library is required to.
- */
-
-#define _U     0x01    /* upper */
-#define _L     0x02    /* lower */
-#define _D     0x04    /* digit */
-#define _C     0x08    /* cntrl */
-#define _P     0x10    /* punct */
-#define _S     0x20    /* white space (space/lf/tab) */
-#define _X     0x40    /* hex digit */
-#define _SP    0x80    /* hard space (0x20) */
-
-extern unsigned char _ctype[];
-
-#define __ismask(x) (_ctype[(int)(unsigned char)(x)])
-
-#define isalnum(c)     ((__ismask(c)&(_U|_L|_D)) != 0)
-#define isalpha(c)     ((__ismask(c)&(_U|_L)) != 0)
-#define iscntrl(c)     ((__ismask(c)&(_C)) != 0)
-#define isdigit(c)     ((__ismask(c)&(_D)) != 0)
-#define isgraph(c)     ((__ismask(c)&(_P|_U|_L|_D)) != 0)
-#define islower(c)     ((__ismask(c)&(_L)) != 0)
-#define isprint(c)     ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
-#define ispunct(c)     ((__ismask(c)&(_P)) != 0)
-#define isspace(c)     ((__ismask(c)&(_S)) != 0)
-#define isupper(c)     ((__ismask(c)&(_U)) != 0)
-#define isxdigit(c)    ((__ismask(c)&(_D|_X)) != 0)
-
-#define isascii(c) (((unsigned char)(c))<=0x7f)
-#define toascii(c) (((unsigned char)(c))&0x7f)
-
-static inline unsigned char __tolower(unsigned char c)
-{
-       if (isupper(c))
-               c -= 'A'-'a';
-       return c;
-}
-
-static inline unsigned char __toupper(unsigned char c)
-{
-       if (islower(c))
-               c -= 'a'-'A';
-       return c;
-}
-
-#define tolower(c) __tolower(c)
-#define toupper(c) __toupper(c)
-
-#endif
diff --git a/xen/include/xeno/delay.h b/xen/include/xeno/delay.h
deleted file mode 100644 (file)
index 9d70ef0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _LINUX_DELAY_H
-#define _LINUX_DELAY_H
-
-/* Copyright (C) 1993 Linus Torvalds */
-
-#include <asm/delay.h>
-#define mdelay(n) (\
-       {unsigned long msec=(n); while (msec--) udelay(1000);})
-
-#endif /* defined(_LINUX_DELAY_H) */
diff --git a/xen/include/xeno/elevator.h b/xen/include/xeno/elevator.h
deleted file mode 100644 (file)
index 1a8bb5c..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#ifndef _LINUX_ELEVATOR_H
-#define _LINUX_ELEVATOR_H
-
-typedef void (elevator_fn) (struct request *, elevator_t *,
-                           struct list_head *,
-                           struct list_head *, int);
-
-typedef int (elevator_merge_fn) (request_queue_t *, struct request **, struct list_head *,
-                                struct buffer_head *, int, int);
-
-typedef void (elevator_merge_cleanup_fn) (request_queue_t *, struct request *, int);
-
-typedef void (elevator_merge_req_fn) (struct request *, struct request *);
-
-struct elevator_s
-{
-       int read_latency;
-       int write_latency;
-
-       elevator_merge_fn *elevator_merge_fn;
-       elevator_merge_cleanup_fn *elevator_merge_cleanup_fn;
-       elevator_merge_req_fn *elevator_merge_req_fn;
-
-       unsigned int queue_ID;
-};
-
-int elevator_noop_merge(request_queue_t *, struct request **, struct list_head *, struct buffer_head *, int, int);
-void elevator_noop_merge_cleanup(request_queue_t *, struct request *, int);
-void elevator_noop_merge_req(struct request *, struct request *);
-
-int elevator_linus_merge(request_queue_t *, struct request **, struct list_head *, struct buffer_head *, int, int);
-void elevator_linus_merge_cleanup(request_queue_t *, struct request *, int);
-void elevator_linus_merge_req(struct request *, struct request *);
-
-typedef struct blkelv_ioctl_arg_s {
-       int queue_ID;
-       int read_latency;
-       int write_latency;
-       int max_bomb_segments;
-} blkelv_ioctl_arg_t;
-
-#define BLKELVGET   _IOR(0x12,106,sizeof(blkelv_ioctl_arg_t))
-#define BLKELVSET   _IOW(0x12,107,sizeof(blkelv_ioctl_arg_t))
-
-extern int blkelvget_ioctl(elevator_t *, blkelv_ioctl_arg_t *);
-extern int blkelvset_ioctl(elevator_t *, const blkelv_ioctl_arg_t *);
-
-extern void elevator_init(elevator_t *, elevator_t);
-
-/*
- * Return values from elevator merger
- */
-#define ELEVATOR_NO_MERGE      0
-#define ELEVATOR_FRONT_MERGE   1
-#define ELEVATOR_BACK_MERGE    2
-
-/*
- * This is used in the elevator algorithm.  We don't prioritise reads
- * over writes any more --- although reads are more time-critical than
- * writes, by treating them equally we increase filesystem throughput.
- * This turns out to give better overall performance.  -- sct
- */
-#define IN_ORDER(s1,s2)                                \
-       ((((s1)->rq_dev == (s2)->rq_dev &&      \
-          (s1)->sector < (s2)->sector)) ||     \
-        (s1)->rq_dev < (s2)->rq_dev)
-
-#define BHRQ_IN_ORDER(bh, rq)                  \
-       ((((bh)->b_rdev == (rq)->rq_dev &&      \
-          (bh)->b_rsector < (rq)->sector)) ||  \
-        (bh)->b_rdev < (rq)->rq_dev)
-
-static inline int elevator_request_latency(elevator_t * elevator, int rw)
-{
-       int latency;
-
-       latency = elevator->read_latency;
-       if (rw != READ)
-               latency = elevator->write_latency;
-
-       return latency;
-}
-
-#define ELEVATOR_NOOP                                                  \
-((elevator_t) {                                                                \
-       0,                              /* read_latency */              \
-       0,                              /* write_latency */             \
-                                                                       \
-       elevator_noop_merge,            /* elevator_merge_fn */         \
-       elevator_noop_merge_cleanup,    /* elevator_merge_cleanup_fn */ \
-       elevator_noop_merge_req,        /* elevator_merge_req_fn */     \
-       })
-
-#define ELEVATOR_LINUS                                                 \
-((elevator_t) {                                                                \
-       8192,                           /* read passovers */            \
-       16384,                          /* write passovers */           \
-                                                                       \
-       elevator_linus_merge,           /* elevator_merge_fn */         \
-       elevator_linus_merge_cleanup,   /* elevator_merge_cleanup_fn */ \
-       elevator_linus_merge_req,       /* elevator_merge_req_fn */     \
-       })
-
-#endif
diff --git a/xen/include/xeno/errno.h b/xen/include/xeno/errno.h
deleted file mode 100644 (file)
index 7cf599f..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef _I386_ERRNO_H
-#define _I386_ERRNO_H
-
-#define        EPERM            1      /* Operation not permitted */
-#define        ENOENT           2      /* No such file or directory */
-#define        ESRCH            3      /* No such process */
-#define        EINTR            4      /* Interrupted system call */
-#define        EIO              5      /* I/O error */
-#define        ENXIO            6      /* No such device or address */
-#define        E2BIG            7      /* Arg list too long */
-#define        ENOEXEC          8      /* Exec format error */
-#define        EBADF            9      /* Bad file number */
-#define        ECHILD          10      /* No child processes */
-#define        EAGAIN          11      /* Try again */
-#define        ENOMEM          12      /* Out of memory */
-#define        EACCES          13      /* Permission denied */
-#define        EFAULT          14      /* Bad address */
-#define        ENOTBLK         15      /* Block device required */
-#define        EBUSY           16      /* Device or resource busy */
-#define        EEXIST          17      /* File exists */
-#define        EXDEV           18      /* Cross-device link */
-#define        ENODEV          19      /* No such device */
-#define        ENOTDIR         20      /* Not a directory */
-#define        EISDIR          21      /* Is a directory */
-#define        EINVAL          22      /* Invalid argument */
-#define        ENFILE          23      /* File table overflow */
-#define        EMFILE          24      /* Too many open files */
-#define        ENOTTY          25      /* Not a typewriter */
-#define        ETXTBSY         26      /* Text file busy */
-#define        EFBIG           27      /* File too large */
-#define        ENOSPC          28      /* No space left on device */
-#define        ESPIPE          29      /* Illegal seek */
-#define        EROFS           30      /* Read-only file system */
-#define        EMLINK          31      /* Too many links */
-#define        EPIPE           32      /* Broken pipe */
-#define        EDOM            33      /* Math argument out of domain of func */
-#define        ERANGE          34      /* Math result not representable */
-#define        EDEADLK         35      /* Resource deadlock would occur */
-#define        ENAMETOOLONG    36      /* File name too long */
-#define        ENOLCK          37      /* No record locks available */
-#define        ENOSYS          38      /* Function not implemented */
-#define        ENOTEMPTY       39      /* Directory not empty */
-#define        ELOOP           40      /* Too many symbolic links encountered */
-#define        EWOULDBLOCK     EAGAIN  /* Operation would block */
-#define        ENOMSG          42      /* No message of desired type */
-#define        EIDRM           43      /* Identifier removed */
-#define        ECHRNG          44      /* Channel number out of range */
-#define        EL2NSYNC        45      /* Level 2 not synchronized */
-#define        EL3HLT          46      /* Level 3 halted */
-#define        EL3RST          47      /* Level 3 reset */
-#define        ELNRNG          48      /* Link number out of range */
-#define        EUNATCH         49      /* Protocol driver not attached */
-#define        ENOCSI          50      /* No CSI structure available */
-#define        EL2HLT          51      /* Level 2 halted */
-#define        EBADE           52      /* Invalid exchange */
-#define        EBADR           53      /* Invalid request descriptor */
-#define        EXFULL          54      /* Exchange full */
-#define        ENOANO          55      /* No anode */
-#define        EBADRQC         56      /* Invalid request code */
-#define        EBADSLT         57      /* Invalid slot */
-
-#define        EDEADLOCK       EDEADLK
-
-#define        EBFONT          59      /* Bad font file format */
-#define        ENOSTR          60      /* Device not a stream */
-#define        ENODATA         61      /* No data available */
-#define        ETIME           62      /* Timer expired */
-#define        ENOSR           63      /* Out of streams resources */
-#define        ENONET          64      /* Machine is not on the network */
-#define        ENOPKG          65      /* Package not installed */
-#define        EREMOTE         66      /* Object is remote */
-#define        ENOLINK         67      /* Link has been severed */
-#define        EADV            68      /* Advertise error */
-#define        ESRMNT          69      /* Srmount error */
-#define        ECOMM           70      /* Communication error on send */
-#define        EPROTO          71      /* Protocol error */
-#define        EMULTIHOP       72      /* Multihop attempted */
-#define        EDOTDOT         73      /* RFS specific error */
-#define        EBADMSG         74      /* Not a data message */
-#define        EOVERFLOW       75      /* Value too large for defined data type */
-#define        ENOTUNIQ        76      /* Name not unique on network */
-#define        EBADFD          77      /* File descriptor in bad state */
-#define        EREMCHG         78      /* Remote address changed */
-#define        ELIBACC         79      /* Can not access a needed shared library */
-#define        ELIBBAD         80      /* Accessing a corrupted shared library */
-#define        ELIBSCN         81      /* .lib section in a.out corrupted */
-#define        ELIBMAX         82      /* Attempting to link in too many shared libraries */
-#define        ELIBEXEC        83      /* Cannot exec a shared library directly */
-#define        EILSEQ          84      /* Illegal byte sequence */
-#define        ERESTART        85      /* Interrupted system call should be restarted */
-#define        ESTRPIPE        86      /* Streams pipe error */
-#define        EUSERS          87      /* Too many users */
-#define        ENOTSOCK        88      /* Socket operation on non-socket */
-#define        EDESTADDRREQ    89      /* Destination address required */
-#define        EMSGSIZE        90      /* Message too long */
-#define        EPROTOTYPE      91      /* Protocol wrong type for socket */
-#define        ENOPROTOOPT     92      /* Protocol not available */
-#define        EPROTONOSUPPORT 93      /* Protocol not supported */
-#define        ESOCKTNOSUPPORT 94      /* Socket type not supported */
-#define        EOPNOTSUPP      95      /* Operation not supported on transport endpoint */
-#define        EPFNOSUPPORT    96      /* Protocol family not supported */
-#define        EAFNOSUPPORT    97      /* Address family not supported by protocol */
-#define        EADDRINUSE      98      /* Address already in use */
-#define        EADDRNOTAVAIL   99      /* Cannot assign requested address */
-#define        ENETDOWN        100     /* Network is down */
-#define        ENETUNREACH     101     /* Network is unreachable */
-#define        ENETRESET       102     /* Network dropped connection because of reset */
-#define        ECONNABORTED    103     /* Software caused connection abort */
-#define        ECONNRESET      104     /* Connection reset by peer */
-#define        ENOBUFS         105     /* No buffer space available */
-#define        EISCONN         106     /* Transport endpoint is already connected */
-#define        ENOTCONN        107     /* Transport endpoint is not connected */
-#define        ESHUTDOWN       108     /* Cannot send after transport endpoint shutdown */
-#define        ETOOMANYREFS    109     /* Too many references: cannot splice */
-#define        ETIMEDOUT       110     /* Connection timed out */
-#define        ECONNREFUSED    111     /* Connection refused */
-#define        EHOSTDOWN       112     /* Host is down */
-#define        EHOSTUNREACH    113     /* No route to host */
-#define        EALREADY        114     /* Operation already in progress */
-#define        EINPROGRESS     115     /* Operation now in progress */
-#define        ESTALE          116     /* Stale NFS file handle */
-#define        EUCLEAN         117     /* Structure needs cleaning */
-#define        ENOTNAM         118     /* Not a XENIX named type file */
-#define        ENAVAIL         119     /* No XENIX semaphores available */
-#define        EISNAM          120     /* Is a named type file */
-#define        EREMOTEIO       121     /* Remote I/O error */
-#define        EDQUOT          122     /* Quota exceeded */
-
-#define        ENOMEDIUM       123     /* No medium found */
-#define        EMEDIUMTYPE     124     /* Wrong medium type */
-
-#endif
diff --git a/xen/include/xeno/etherdevice.h b/xen/include/xeno/etherdevice.h
deleted file mode 100644 (file)
index 345875f..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  NET  is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions for the Ethernet handlers.
- *
- * Version:    @(#)eth.h       1.0.4   05/13/93
- *
- * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             Relocated to include/linux where it belongs by Alan Cox 
- *                                                     <gw4pts@gw4pts.ampr.org>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- *
- *     WARNING: This move may well be temporary. This file will get merged with others RSN.
- *
- */
-#ifndef _LINUX_ETHERDEVICE_H
-#define _LINUX_ETHERDEVICE_H
-
-#include <xeno/if_ether.h>
-#include <asm/domain_page.h>
-
-#ifdef __KERNEL__
-extern int             eth_header(struct sk_buff *skb, struct net_device *dev,
-                                  unsigned short type, void *daddr,
-                                  void *saddr, unsigned len);
-extern int             eth_rebuild_header(struct sk_buff *skb);
-extern unsigned short  eth_type_trans(struct sk_buff *skb, struct net_device *dev);
-extern void            eth_header_cache_update(struct hh_cache *hh, struct net_device *dev,
-                                               unsigned char * haddr);
-extern int             eth_header_cache(struct neighbour *neigh,
-                                        struct hh_cache *hh);
-extern int             eth_header_parse(struct sk_buff *skb,
-                                        unsigned char *haddr);
-extern struct net_device *init_etherdev(struct net_device *dev, int sizeof_priv);
-extern struct net_device *alloc_etherdev(int sizeof_priv);
-
-static inline void eth_copy_and_sum (struct sk_buff *dest, unsigned char *src, int len, int base)
-{
-       char *vdata = map_domain_mem(__pa(dest->data));
-       memcpy(vdata, src, len);
-       unmap_domain_mem(vdata);
-}
-
-/**
- * is_valid_ether_addr - Determine if the given Ethernet address is valid
- * @addr: Pointer to a six-byte array containing the Ethernet address
- *
- * Check that the Ethernet address (MAC) is not 00:00:00:00:00:00, is not
- * a multicast address, and is not FF:FF:FF:FF:FF:FF.  The multicast
- * and FF:FF:... tests are combined into the single test "!(addr[0]&1)".
- *
- * Return true if the address is valid.
- */
-static inline int is_valid_ether_addr( u8 *addr )
-{
-       const char zaddr[6] = {0,};
-
-       return !(addr[0]&1) && memcmp( addr, zaddr, 6);
-}
-
-#endif
-
-#endif /* _LINUX_ETHERDEVICE_H */
diff --git a/xen/include/xeno/ethtool.h b/xen/include/xeno/ethtool.h
deleted file mode 100644 (file)
index e672ac5..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * ethtool.h: Defines for Linux ethtool.
- *
- * Copyright (C) 1998 David S. Miller (davem@redhat.com)
- * Copyright 2001 Jeff Garzik <jgarzik@pobox.com>
- * Portions Copyright 2001 Sun Microsystems (thockin@sun.com)
- * Portions Copyright 2002 Intel (eli.kupermann@intel.com,
- *                                christopher.leech@intel.com,
- *                                scott.feldman@intel.com)
- */
-
-#ifndef _LINUX_ETHTOOL_H
-#define _LINUX_ETHTOOL_H
-
-
-/* This should work for both 32 and 64 bit userland. */
-struct ethtool_cmd {
-       u32     cmd;
-       u32     supported;      /* Features this interface supports */
-       u32     advertising;    /* Features this interface advertises */
-       u16     speed;          /* The forced speed, 10Mb, 100Mb, gigabit */
-       u8      duplex;         /* Duplex, half or full */
-       u8      port;           /* Which connector port */
-       u8      phy_address;
-       u8      transceiver;    /* Which tranceiver to use */
-       u8      autoneg;        /* Enable or disable autonegotiation */
-       u32     maxtxpkt;       /* Tx pkts before generating tx int */
-       u32     maxrxpkt;       /* Rx pkts before generating rx int */
-       u32     reserved[4];
-};
-
-#define ETHTOOL_BUSINFO_LEN    32
-/* these strings are set to whatever the driver author decides... */
-struct ethtool_drvinfo {
-       u32     cmd;
-       char    driver[32];     /* driver short name, "tulip", "eepro100" */
-       char    version[32];    /* driver version string */
-       char    fw_version[32]; /* firmware version string, if applicable */
-       char    bus_info[ETHTOOL_BUSINFO_LEN];  /* Bus info for this IF. */
-                               /* For PCI devices, use pci_dev->slot_name. */
-       char    reserved1[32];
-       char    reserved2[16];
-       u32     n_stats;        /* number of u64's from ETHTOOL_GSTATS */
-       u32     testinfo_len;
-       u32     eedump_len;     /* Size of data from ETHTOOL_GEEPROM (bytes) */
-       u32     regdump_len;    /* Size of data from ETHTOOL_GREGS (bytes) */
-};
-
-#define SOPASS_MAX     6
-/* wake-on-lan settings */
-struct ethtool_wolinfo {
-       u32     cmd;
-       u32     supported;
-       u32     wolopts;
-       u8      sopass[SOPASS_MAX]; /* SecureOn(tm) password */
-};
-
-/* for passing single values */
-struct ethtool_value {
-       u32     cmd;
-       u32     data;
-};
-
-/* for passing big chunks of data */
-struct ethtool_regs {
-       u32     cmd;
-       u32     version; /* driver-specific, indicates different chips/revs */
-       u32     len; /* bytes */
-       u8      data[0];
-};
-
-/* for passing EEPROM chunks */
-struct ethtool_eeprom {
-       u32     cmd;
-       u32     magic;
-       u32     offset; /* in bytes */
-       u32     len; /* in bytes */
-       u8      data[0];
-};
-
-/* for configuring coalescing parameters of chip */
-struct ethtool_coalesce {
-       u32     cmd;    /* ETHTOOL_{G,S}COALESCE */
-
-       /* How many usecs to delay an RX interrupt after
-        * a packet arrives.  If 0, only rx_max_coalesced_frames
-        * is used.
-        */
-       u32     rx_coalesce_usecs;
-
-       /* How many packets to delay an RX interrupt after
-        * a packet arrives.  If 0, only rx_coalesce_usecs is
-        * used.  It is illegal to set both usecs and max frames
-        * to zero as this would cause RX interrupts to never be
-        * generated.
-        */
-       u32     rx_max_coalesced_frames;
-
-       /* Same as above two parameters, except that these values
-        * apply while an IRQ is being services by the host.  Not
-        * all cards support this feature and the values are ignored
-        * in that case.
-        */
-       u32     rx_coalesce_usecs_irq;
-       u32     rx_max_coalesced_frames_irq;
-
-       /* How many usecs to delay a TX interrupt after
-        * a packet is sent.  If 0, only tx_max_coalesced_frames
-        * is used.
-        */
-       u32     tx_coalesce_usecs;
-
-       /* How many packets to delay a TX interrupt after
-        * a packet is sent.  If 0, only tx_coalesce_usecs is
-        * used.  It is illegal to set both usecs and max frames
-        * to zero as this would cause TX interrupts to never be
-        * generated.
-        */
-       u32     tx_max_coalesced_frames;
-
-       /* Same as above two parameters, except that these values
-        * apply while an IRQ is being services by the host.  Not
-        * all cards support this feature and the values are ignored
-        * in that case.
-        */
-       u32     tx_coalesce_usecs_irq;
-       u32     tx_max_coalesced_frames_irq;
-
-       /* How many usecs to delay in-memory statistics
-        * block updates.  Some drivers do not have an in-memory
-        * statistic block, and in such cases this value is ignored.
-        * This value must not be zero.
-        */
-       u32     stats_block_coalesce_usecs;
-
-       /* Adaptive RX/TX coalescing is an algorithm implemented by
-        * some drivers to improve latency under low packet rates and
-        * improve throughput under high packet rates.  Some drivers
-        * only implement one of RX or TX adaptive coalescing.  Anything
-        * not implemented by the driver causes these values to be
-        * silently ignored.
-        */
-       u32     use_adaptive_rx_coalesce;
-       u32     use_adaptive_tx_coalesce;
-
-       /* When the packet rate (measured in packets per second)
-        * is below pkt_rate_low, the {rx,tx}_*_low parameters are
-        * used.
-        */
-       u32     pkt_rate_low;
-       u32     rx_coalesce_usecs_low;
-       u32     rx_max_coalesced_frames_low;
-       u32     tx_coalesce_usecs_low;
-       u32     tx_max_coalesced_frames_low;
-
-       /* When the packet rate is below pkt_rate_high but above
-        * pkt_rate_low (both measured in packets per second) the
-        * normal {rx,tx}_* coalescing parameters are used.
-        */
-
-       /* When the packet rate is (measured in packets per second)
-        * is above pkt_rate_high, the {rx,tx}_*_high parameters are
-        * used.
-        */
-       u32     pkt_rate_high;
-       u32     rx_coalesce_usecs_high;
-       u32     rx_max_coalesced_frames_high;
-       u32     tx_coalesce_usecs_high;
-       u32     tx_max_coalesced_frames_high;
-
-       /* How often to do adaptive coalescing packet rate sampling,
-        * measured in seconds.  Must not be zero.
-        */
-       u32     rate_sample_interval;
-};
-
-/* for configuring RX/TX ring parameters */
-struct ethtool_ringparam {
-       u32     cmd;    /* ETHTOOL_{G,S}RINGPARAM */
-
-       /* Read only attributes.  These indicate the maximum number
-        * of pending RX/TX ring entries the driver will allow the
-        * user to set.
-        */
-       u32     rx_max_pending;
-       u32     rx_mini_max_pending;
-       u32     rx_jumbo_max_pending;
-       u32     tx_max_pending;
-
-       /* Values changeable by the user.  The valid values are
-        * in the range 1 to the "*_max_pending" counterpart above.
-        */
-       u32     rx_pending;
-       u32     rx_mini_pending;
-       u32     rx_jumbo_pending;
-       u32     tx_pending;
-};
-
-/* for configuring link flow control parameters */
-struct ethtool_pauseparam {
-       u32     cmd;    /* ETHTOOL_{G,S}PAUSEPARAM */
-
-       /* If the link is being auto-negotiated (via ethtool_cmd.autoneg
-        * being true) the user may set 'autonet' here non-zero to have the
-        * pause parameters be auto-negotiated too.  In such a case, the
-        * {rx,tx}_pause values below determine what capabilities are
-        * advertised.
-        *
-        * If 'autoneg' is zero or the link is not being auto-negotiated,
-        * then {rx,tx}_pause force the driver to use/not-use pause
-        * flow control.
-        */
-       u32     autoneg;
-       u32     rx_pause;
-       u32     tx_pause;
-};
-
-#define ETH_GSTRING_LEN                32
-enum ethtool_stringset {
-       ETH_SS_TEST             = 0,
-       ETH_SS_STATS,
-};
-
-/* for passing string sets for data tagging */
-struct ethtool_gstrings {
-       u32     cmd;            /* ETHTOOL_GSTRINGS */
-       u32     string_set;     /* string set id e.c. ETH_SS_TEST, etc*/
-       u32     len;            /* number of strings in the string set */
-       u8      data[0];
-};
-
-enum ethtool_test_flags {
-       ETH_TEST_FL_OFFLINE     = (1 << 0),     /* online / offline */
-       ETH_TEST_FL_FAILED      = (1 << 1),     /* test passed / failed */
-};
-
-/* for requesting NIC test and getting results*/
-struct ethtool_test {
-       u32     cmd;            /* ETHTOOL_TEST */
-       u32     flags;          /* ETH_TEST_FL_xxx */
-       u32     reserved;
-       u32     len;            /* result length, in number of u64 elements */
-       u64     data[0];
-};
-
-/* for dumping NIC-specific statistics */
-struct ethtool_stats {
-       u32     cmd;            /* ETHTOOL_GSTATS */
-       u32     n_stats;        /* number of u64's being returned */
-       u64     data[0];
-};
-
-/* CMDs currently supported */
-#define ETHTOOL_GSET           0x00000001 /* Get settings. */
-#define ETHTOOL_SSET           0x00000002 /* Set settings, privileged. */
-#define ETHTOOL_GDRVINFO       0x00000003 /* Get driver info. */
-#define ETHTOOL_GREGS          0x00000004 /* Get NIC registers, privileged. */
-#define ETHTOOL_GWOL           0x00000005 /* Get wake-on-lan options. */
-#define ETHTOOL_SWOL           0x00000006 /* Set wake-on-lan options, priv. */
-#define ETHTOOL_GMSGLVL                0x00000007 /* Get driver message level */
-#define ETHTOOL_SMSGLVL                0x00000008 /* Set driver msg level, priv. */
-#define ETHTOOL_NWAY_RST       0x00000009 /* Restart autonegotiation, priv. */
-#define ETHTOOL_GLINK          0x0000000a /* Get link status (ethtool_value) */
-#define ETHTOOL_GEEPROM                0x0000000b /* Get EEPROM data */
-#define ETHTOOL_SEEPROM                0x0000000c /* Set EEPROM data, priv. */
-#define ETHTOOL_GCOALESCE      0x0000000e /* Get coalesce config */
-#define ETHTOOL_SCOALESCE      0x0000000f /* Set coalesce config, priv. */
-#define ETHTOOL_GRINGPARAM     0x00000010 /* Get ring parameters */
-#define ETHTOOL_SRINGPARAM     0x00000011 /* Set ring parameters, priv. */
-#define ETHTOOL_GPAUSEPARAM    0x00000012 /* Get pause parameters */
-#define ETHTOOL_SPAUSEPARAM    0x00000013 /* Set pause parameters, priv. */
-#define ETHTOOL_GRXCSUM                0x00000014 /* Get RX hw csum enable (ethtool_value) */
-#define ETHTOOL_SRXCSUM                0x00000015 /* Set RX hw csum enable (ethtool_value) */
-#define ETHTOOL_GTXCSUM                0x00000016 /* Get TX hw csum enable (ethtool_value) */
-#define ETHTOOL_STXCSUM                0x00000017 /* Set TX hw csum enable (ethtool_value) */
-#define ETHTOOL_GSG            0x00000018 /* Get scatter-gather enable
-                                           * (ethtool_value) */
-#define ETHTOOL_SSG            0x00000019 /* Set scatter-gather enable
-                                           * (ethtool_value), priv. */
-#define ETHTOOL_TEST           0x0000001a /* execute NIC self-test, priv. */
-#define ETHTOOL_GSTRINGS       0x0000001b /* get specified string set */
-#define ETHTOOL_PHYS_ID                0x0000001c /* identify the NIC */
-#define ETHTOOL_GSTATS         0x0000001d /* get NIC-specific statistics */
-
-/* compatibility with older code */
-#define SPARC_ETH_GSET         ETHTOOL_GSET
-#define SPARC_ETH_SSET         ETHTOOL_SSET
-
-/* Indicates what features are supported by the interface. */
-#define SUPPORTED_10baseT_Half         (1 << 0)
-#define SUPPORTED_10baseT_Full         (1 << 1)
-#define SUPPORTED_100baseT_Half                (1 << 2)
-#define SUPPORTED_100baseT_Full                (1 << 3)
-#define SUPPORTED_1000baseT_Half       (1 << 4)
-#define SUPPORTED_1000baseT_Full       (1 << 5)
-#define SUPPORTED_Autoneg              (1 << 6)
-#define SUPPORTED_TP                   (1 << 7)
-#define SUPPORTED_AUI                  (1 << 8)
-#define SUPPORTED_MII                  (1 << 9)
-#define SUPPORTED_FIBRE                        (1 << 10)
-#define SUPPORTED_BNC                  (1 << 11)
-
-/* Indicates what features are advertised by the interface. */
-#define ADVERTISED_10baseT_Half                (1 << 0)
-#define ADVERTISED_10baseT_Full                (1 << 1)
-#define ADVERTISED_100baseT_Half       (1 << 2)
-#define ADVERTISED_100baseT_Full       (1 << 3)
-#define ADVERTISED_1000baseT_Half      (1 << 4)
-#define ADVERTISED_1000baseT_Full      (1 << 5)
-#define ADVERTISED_Autoneg             (1 << 6)
-#define ADVERTISED_TP                  (1 << 7)
-#define ADVERTISED_AUI                 (1 << 8)
-#define ADVERTISED_MII                 (1 << 9)
-#define ADVERTISED_FIBRE               (1 << 10)
-#define ADVERTISED_BNC                 (1 << 11)
-
-/* The following are all involved in forcing a particular link
- * mode for the device for setting things.  When getting the
- * devices settings, these indicate the current mode and whether
- * it was foced up into this mode or autonegotiated.
- */
-
-/* The forced speed, 10Mb, 100Mb, gigabit. */
-#define SPEED_10               10
-#define SPEED_100              100
-#define SPEED_1000             1000
-
-/* Duplex, half or full. */
-#define DUPLEX_HALF            0x00
-#define DUPLEX_FULL            0x01
-
-/* Which connector port. */
-#define PORT_TP                        0x00
-#define PORT_AUI               0x01
-#define PORT_MII               0x02
-#define PORT_FIBRE             0x03
-#define PORT_BNC               0x04
-
-/* Which tranceiver to use. */
-#define XCVR_INTERNAL          0x00
-#define XCVR_EXTERNAL          0x01
-#define XCVR_DUMMY1            0x02
-#define XCVR_DUMMY2            0x03
-#define XCVR_DUMMY3            0x04
-
-/* Enable or disable autonegotiation.  If this is set to enable,
- * the forced link modes above are completely ignored.
- */
-#define AUTONEG_DISABLE                0x00
-#define AUTONEG_ENABLE         0x01
-
-/* Wake-On-Lan options. */
-#define WAKE_PHY               (1 << 0)
-#define WAKE_UCAST             (1 << 1)
-#define WAKE_MCAST             (1 << 2)
-#define WAKE_BCAST             (1 << 3)
-#define WAKE_ARP               (1 << 4)
-#define WAKE_MAGIC             (1 << 5)
-#define WAKE_MAGICSECURE       (1 << 6) /* only meaningful if WAKE_MAGIC */
-
-#endif /* _LINUX_ETHTOOL_H */
diff --git a/xen/include/xeno/event.h b/xen/include/xeno/event.h
deleted file mode 100644 (file)
index 1e9949d..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/******************************************************************************
- * event.h
- * 
- * A nice interface for passing asynchronous events to guest OSes.
- * 
- * Copyright (c) 2002, K A Fraser
- */
-
-#include <xeno/config.h>
-#include <xeno/sched.h>
-#include <asm/bitops.h>
-
-#ifdef CONFIG_SMP
-
-/*
- * mark_guest_event:
- *  @p:        Domain to which event should be passed
- *  @event:    Event number
- *  RETURNS:   "Bitmask" of CPU on which process is currently running
- * 
- * Idea is that caller may loop on task_list, looking for domains
- * to pass events to (using this function). The caller accumulates the
- * bits returned by this function (ORing them together) then calls
- * event_notify().
- * 
- * Guest_events are per-domain events passed directly to the guest OS
- * in ring 1. 
- */
-static inline unsigned long mark_guest_event(struct task_struct *p, int event)
-{
-    unsigned long flags, cpu_mask;
-
-    if ( test_and_set_bit(event, &p->shared_info->events) )
-        return 0;
-
-    spin_lock_irqsave(&schedule_lock[p->processor], flags);
-    if ( p->state == TASK_INTERRUPTIBLE )
-        __wake_up(p);
-    cpu_mask = __reschedule(p);
-    if ( p->has_cpu )
-        cpu_mask |= 1 << p->processor;
-    spin_unlock_irqrestore(&schedule_lock[p->processor], flags);
-
-    return cpu_mask;
-}
-
-/* As above, but hyp_events are handled within the hypervisor. */
-static inline unsigned long mark_hyp_event(struct task_struct *p, int event)
-{
-    unsigned long flags, cpu_mask;
-
-    if ( test_and_set_bit(event, &p->hyp_events) )
-        return 0;
-
-    spin_lock_irqsave(&schedule_lock[p->processor], flags);
-    if ( p->state == TASK_INTERRUPTIBLE )
-        __wake_up(p);
-    cpu_mask = __reschedule(p);
-    if ( p->has_cpu )
-        cpu_mask |= 1 << p->processor;
-    spin_unlock_irqrestore(&schedule_lock[p->processor], flags);
-
-    return cpu_mask;
-}
-
-/* Notify the given set of CPUs that guest events may be outstanding. */
-static inline void guest_event_notify(unsigned long cpu_mask)
-{
-    cpu_mask &= ~(1 << smp_processor_id());
-    if ( cpu_mask != 0 ) smp_send_event_check_mask(cpu_mask);
-}
-
-#else
-
-static inline unsigned long mark_guest_event(struct task_struct *p, int event)
-{
-    if ( !test_and_set_bit(event, &p->shared_info->events) )
-    {
-        if ( p->state == TASK_INTERRUPTIBLE ) wake_up(p);
-        reschedule(p);
-    }
-    return 0;
-}
-
-static inline unsigned long mark_hyp_event(struct task_struct *p, int event)
-{
-    if ( !test_and_set_bit(event, &p->hyp_events) )
-    {
-        if ( p->state == TASK_INTERRUPTIBLE ) wake_up(p);
-        reschedule(p);
-    }
-    return 0;
-}
-
-#define guest_event_notify(_mask) ((void)0)
-
-#endif
-
-/* Notify hypervisor events in thesame way as for guest OS events. */
-#define hyp_event_notify(_mask) guest_event_notify(_mask)
-
-/* Clear a guest-OS event from a per-domain mask. */
-static inline void clear_guest_event(struct task_struct *p, int event)
-{
-    clear_bit(event, &p->shared_info->events);
-}
-
-/* Clear a hypervisor event from a per-domain mask. */
-static inline void clear_hyp_event(struct task_struct *p, int event)
-{
-    clear_bit(event, &p->hyp_events);
-}
-
-/* Called on return from (architecture-dependent) entry.S. */
-void do_hyp_events(void);
diff --git a/xen/include/xeno/genhd.h b/xen/include/xeno/genhd.h
deleted file mode 100644 (file)
index f60cfb0..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-#ifndef _LINUX_GENHD_H
-#define _LINUX_GENHD_H
-
-/*
- *     genhd.h Copyright (C) 1992 Drew Eckhardt
- *     Generic hard disk header file by  
- *             Drew Eckhardt
- *
- *             <drew@colorado.edu>
- */
-
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/major.h>
-
-enum {
-/* These three have identical behaviour; use the second one if DOS fdisk gets
-   confused about extended/logical partitions starting past cylinder 1023. */
-       DOS_EXTENDED_PARTITION = 5,
-       LINUX_EXTENDED_PARTITION = 0x85,
-       WIN98_EXTENDED_PARTITION = 0x0f,
-
-       LINUX_SWAP_PARTITION = 0x82,
-       LINUX_RAID_PARTITION = 0xfd,    /* autodetect RAID partition */
-
-       SOLARIS_X86_PARTITION = LINUX_SWAP_PARTITION,
-
-       DM6_PARTITION = 0x54,   /* has DDO: use xlated geom & offset */
-       EZD_PARTITION = 0x55,   /* EZ-DRIVE */
-       DM6_AUX1PARTITION = 0x51,       /* no DDO:  use xlated geom */
-       DM6_AUX3PARTITION = 0x53,       /* no DDO:  use xlated geom */
-
-       FREEBSD_PARTITION = 0xa5,    /* FreeBSD Partition ID */
-       OPENBSD_PARTITION = 0xa6,    /* OpenBSD Partition ID */
-       NETBSD_PARTITION = 0xa9,   /* NetBSD Partition ID */
-       BSDI_PARTITION = 0xb7,    /* BSDI Partition ID */
-/* Ours is not to wonder why.. */
-       BSD_PARTITION = FREEBSD_PARTITION,
-       MINIX_PARTITION = 0x81,  /* Minix Partition ID */
-       PLAN9_PARTITION = 0x39,  /* Plan 9 Partition ID */
-       UNIXWARE_PARTITION = 0x63,              /* Partition ID, same as */
-                                               /* GNU_HURD and SCO Unix */
-};
-
-struct partition {
-       unsigned char boot_ind;         /* 0x80 - active */
-       unsigned char head;             /* starting head */
-       unsigned char sector;           /* starting sector */
-       unsigned char cyl;              /* starting cylinder */
-       unsigned char sys_ind;          /* What partition type */
-       unsigned char end_head;         /* end head */
-       unsigned char end_sector;       /* end sector */
-       unsigned char end_cyl;          /* end cylinder */
-       unsigned int start_sect;        /* starting sector counting from 0 */
-       unsigned int nr_sects;          /* nr of sectors in partition */
-} __attribute__((packed));
-
-#ifdef __KERNEL__
-/*#  include <xeno/devfs_fs_kernel.h>*/
-
-struct hd_struct {
-       unsigned long start_sect;
-       unsigned long nr_sects;
-    /*devfs_handle_t de;*/              /* primary (master) devfs entry  */
-       int number;                     /* stupid old code wastes space  */
-
-       /* Performance stats: */
-       unsigned int ios_in_flight;
-       unsigned int io_ticks;
-       unsigned int last_idle_time;
-       unsigned int last_queue_change;
-       unsigned int aveq;
-       
-       unsigned int rd_ios;
-       unsigned int rd_merges;
-       unsigned int rd_ticks;
-       unsigned int rd_sectors;
-       unsigned int wr_ios;
-       unsigned int wr_merges;
-       unsigned int wr_ticks;
-       unsigned int wr_sectors;        
-};
-
-#define GENHD_FL_REMOVABLE  1
-
-struct gendisk {
-       int major;                      /* major number of driver */
-       const char *major_name;         /* name of major driver */
-       int minor_shift;                /* number of times minor is shifted to
-                                          get real minor */
-       int max_p;                      /* maximum partitions per device */
-
-       struct hd_struct *part;         /* [indexed by minor] */
-       int *sizes;                     /* [idem], device size in blocks */
-       int nr_real;                    /* number of real devices */
-
-       void *real_devices;             /* internal use */
-       struct gendisk *next;
-       struct block_device_operations *fops;
-
-    /*devfs_handle_t *de_arr;*/         /* one per physical disc */
-       char *flags;                    /* one per physical disc */
-};
-
-/* drivers/block/genhd.c */
-extern struct gendisk *gendisk_head;
-
-extern void add_gendisk(struct gendisk *gp);
-extern void del_gendisk(struct gendisk *gp);
-extern struct gendisk *get_gendisk(kdev_t dev);
-extern int walk_gendisk(int (*walk)(struct gendisk *, void *), void *);
-
-#endif  /*  __KERNEL__  */
-
-#ifdef CONFIG_SOLARIS_X86_PARTITION
-
-#define SOLARIS_X86_NUMSLICE   8
-#define SOLARIS_X86_VTOC_SANE  (0x600DDEEEUL)
-
-struct solaris_x86_slice {
-       ushort  s_tag;                  /* ID tag of partition */
-       ushort  s_flag;                 /* permission flags */
-       unsigned int s_start;           /* start sector no of partition */
-       unsigned int s_size;            /* # of blocks in partition */
-};
-
-struct solaris_x86_vtoc {
-       unsigned int v_bootinfo[3];     /* info needed by mboot (unsupported) */
-       unsigned int v_sanity;          /* to verify vtoc sanity */
-       unsigned int v_version;         /* layout version */
-       char    v_volume[8];            /* volume name */
-       ushort  v_sectorsz;             /* sector size in bytes */
-       ushort  v_nparts;               /* number of partitions */
-       unsigned int v_reserved[10];    /* free space */
-       struct solaris_x86_slice
-               v_slice[SOLARIS_X86_NUMSLICE]; /* slice headers */
-       unsigned int timestamp[SOLARIS_X86_NUMSLICE]; /* timestamp (unsupported) */
-       char    v_asciilabel[128];      /* for compatibility */
-};
-
-#endif /* CONFIG_SOLARIS_X86_PARTITION */
-
-#ifdef CONFIG_BSD_DISKLABEL
-/*
- * BSD disklabel support by Yossi Gottlieb <yogo@math.tau.ac.il>
- * updated by Marc Espie <Marc.Espie@openbsd.org>
- */
-
-/* check against BSD src/sys/sys/disklabel.h for consistency */
-
-#define BSD_DISKMAGIC  (0x82564557UL)  /* The disk magic number */
-#define BSD_MAXPARTITIONS      8
-#define OPENBSD_MAXPARTITIONS  16
-#define BSD_FS_UNUSED          0       /* disklabel unused partition entry ID */
-struct bsd_disklabel {
-       __u32   d_magic;                /* the magic number */
-       __s16   d_type;                 /* drive type */
-       __s16   d_subtype;              /* controller/d_type specific */
-       char    d_typename[16];         /* type name, e.g. "eagle" */
-       char    d_packname[16];                 /* pack identifier */ 
-       __u32   d_secsize;              /* # of bytes per sector */
-       __u32   d_nsectors;             /* # of data sectors per track */
-       __u32   d_ntracks;              /* # of tracks per cylinder */
-       __u32   d_ncylinders;           /* # of data cylinders per unit */
-       __u32   d_secpercyl;            /* # of data sectors per cylinder */
-       __u32   d_secperunit;           /* # of data sectors per unit */
-       __u16   d_sparespertrack;       /* # of spare sectors per track */
-       __u16   d_sparespercyl;         /* # of spare sectors per cylinder */
-       __u32   d_acylinders;           /* # of alt. cylinders per unit */
-       __u16   d_rpm;                  /* rotational speed */
-       __u16   d_interleave;           /* hardware sector interleave */
-       __u16   d_trackskew;            /* sector 0 skew, per track */
-       __u16   d_cylskew;              /* sector 0 skew, per cylinder */
-       __u32   d_headswitch;           /* head switch time, usec */
-       __u32   d_trkseek;              /* track-to-track seek, usec */
-       __u32   d_flags;                /* generic flags */
-#define NDDATA 5
-       __u32   d_drivedata[NDDATA];    /* drive-type specific information */
-#define NSPARE 5
-       __u32   d_spare[NSPARE];        /* reserved for future use */
-       __u32   d_magic2;               /* the magic number (again) */
-       __u16   d_checksum;             /* xor of data incl. partitions */
-
-                       /* filesystem and partition information: */
-       __u16   d_npartitions;          /* number of partitions in following */
-       __u32   d_bbsize;               /* size of boot area at sn0, bytes */
-       __u32   d_sbsize;               /* max size of fs superblock, bytes */
-       struct  bsd_partition {         /* the partition table */
-               __u32   p_size;         /* number of sectors in partition */
-               __u32   p_offset;       /* starting sector */
-               __u32   p_fsize;        /* filesystem basic fragment size */
-               __u8    p_fstype;       /* filesystem type, see below */
-               __u8    p_frag;         /* filesystem fragments per block */
-               __u16   p_cpg;          /* filesystem cylinders per group */
-       } d_partitions[BSD_MAXPARTITIONS];      /* actually may be more */
-};
-
-#endif /* CONFIG_BSD_DISKLABEL */
-
-#ifdef CONFIG_UNIXWARE_DISKLABEL
-/*
- * Unixware slices support by Andrzej Krzysztofowicz <ankry@mif.pg.gda.pl>
- * and Krzysztof G. Baranowski <kgb@knm.org.pl>
- */
-
-#define UNIXWARE_DISKMAGIC     (0xCA5E600DUL)  /* The disk magic number */
-#define UNIXWARE_DISKMAGIC2    (0x600DDEEEUL)  /* The slice table magic nr */
-#define UNIXWARE_NUMSLICE      16
-#define UNIXWARE_FS_UNUSED     0               /* Unused slice entry ID */
-
-struct unixware_slice {
-       __u16   s_label;        /* label */
-       __u16   s_flags;        /* permission flags */
-       __u32   start_sect;     /* starting sector */
-       __u32   nr_sects;       /* number of sectors in slice */
-};
-
-struct unixware_disklabel {
-       __u32   d_type;                 /* drive type */
-       __u32   d_magic;                /* the magic number */
-       __u32   d_version;              /* version number */
-       char    d_serial[12];           /* serial number of the device */
-       __u32   d_ncylinders;           /* # of data cylinders per device */
-       __u32   d_ntracks;              /* # of tracks per cylinder */
-       __u32   d_nsectors;             /* # of data sectors per track */
-       __u32   d_secsize;              /* # of bytes per sector */
-       __u32   d_part_start;           /* # of first sector of this partition */
-       __u32   d_unknown1[12];         /* ? */
-       __u32   d_alt_tbl;              /* byte offset of alternate table */
-       __u32   d_alt_len;              /* byte length of alternate table */
-       __u32   d_phys_cyl;             /* # of physical cylinders per device */
-       __u32   d_phys_trk;             /* # of physical tracks per cylinder */
-       __u32   d_phys_sec;             /* # of physical sectors per track */
-       __u32   d_phys_bytes;           /* # of physical bytes per sector */
-       __u32   d_unknown2;             /* ? */
-       __u32   d_unknown3;             /* ? */
-       __u32   d_pad[8];               /* pad */
-
-       struct unixware_vtoc {
-               __u32   v_magic;                /* the magic number */
-               __u32   v_version;              /* version number */
-               char    v_name[8];              /* volume name */
-               __u16   v_nslices;              /* # of slices */
-               __u16   v_unknown1;             /* ? */
-               __u32   v_reserved[10];         /* reserved */
-               struct unixware_slice
-                       v_slice[UNIXWARE_NUMSLICE];     /* slice headers */
-       } vtoc;
-
-};  /* 408 */
-
-#endif /* CONFIG_UNIXWARE_DISKLABEL */
-
-#ifdef CONFIG_MINIX_SUBPARTITION
-#   define MINIX_NR_SUBPARTITIONS  4
-#endif /* CONFIG_MINIX_SUBPARTITION */
-
-#ifdef __KERNEL__
-
-char *disk_name (struct gendisk *hd, int minor, char *buf);
-
-/*
- * disk_round_stats is used to round off the IO statistics for a disk
- * for a complete clock tick.
- */
-void disk_round_stats(struct hd_struct *hd);
-
-/* 
- * Account for the completion of an IO request (used by drivers which 
- * bypass the normal end_request processing) 
- */
-struct request;
-void req_finished_io(struct request *);
-
-#ifdef DEVFS_MUST_DIE
-extern void devfs_register_partitions (struct gendisk *dev, int minor,
-                                      int unregister);
-#endif
-
-
-
-/*
- * FIXME: this should use genhd->minor_shift, but that is slow to look up.
- */
-static inline unsigned int disk_index (kdev_t dev)
-{
-       int major = MAJOR(dev);
-       int minor = MINOR(dev);
-       unsigned int index;
-
-       switch (major) {
-               case DAC960_MAJOR+0:
-                       index = (minor & 0x00f8) >> 3;
-                       break;
-               case SCSI_DISK0_MAJOR:
-                       index = (minor & 0x00f0) >> 4;
-                       break;
-               case IDE0_MAJOR:        /* same as HD_MAJOR */
-               case XT_DISK_MAJOR:
-                       index = (minor & 0x0040) >> 6;
-                       break;
-               case IDE1_MAJOR:
-                       index = ((minor & 0x0040) >> 6) + 2;
-                       break;
-               default:
-                       return 0;
-       }
-       return index;
-}
-
-#endif
-
-#endif
diff --git a/xen/include/xeno/hdreg.h b/xen/include/xeno/hdreg.h
deleted file mode 100644 (file)
index a1406aa..0000000
+++ /dev/null
@@ -1,662 +0,0 @@
-#ifndef _LINUX_HDREG_H
-#define _LINUX_HDREG_H
-
-/*
- * This file contains some defines for the AT-hd-controller.
- * Various sources.  
- */
-
-#define HD_IRQ 14                      /* the standard disk interrupt */
-
-/* ide.c has its own port definitions in "ide.h" */
-
-/* Hd controller regs. Ref: IBM AT Bios-listing */
-#define HD_DATA                0x1f0           /* _CTL when writing */
-#define HD_ERROR       0x1f1           /* see err-bits */
-#define HD_NSECTOR     0x1f2           /* nr of sectors to read/write */
-#define HD_SECTOR      0x1f3           /* starting sector */
-#define HD_LCYL                0x1f4           /* starting cylinder */
-#define HD_HCYL                0x1f5           /* high byte of starting cyl */
-#define HD_CURRENT     0x1f6           /* 101dhhhh , d=drive, hhhh=head */
-#define HD_STATUS      0x1f7           /* see status-bits */
-#define HD_FEATURE     HD_ERROR        /* same io address, read=error, write=feature */
-#define HD_PRECOMP     HD_FEATURE      /* obsolete use of this port - predates IDE */
-#define HD_COMMAND     HD_STATUS       /* same io address, read=status, write=cmd */
-
-#define HD_CMD         0x3f6           /* used for resets */
-#define HD_ALTSTATUS   0x3f6           /* same as HD_STATUS but doesn't clear irq */
-
-/* remainder is shared between hd.c, ide.c, ide-cd.c, and the hdparm utility */
-
-/* Bits of HD_STATUS */
-#define ERR_STAT               0x01
-#define INDEX_STAT             0x02
-#define ECC_STAT               0x04    /* Corrected error */
-#define DRQ_STAT               0x08
-#define SEEK_STAT              0x10
-#define WRERR_STAT             0x20
-#define READY_STAT             0x40
-#define BUSY_STAT              0x80
-
-/* Bits for HD_ERROR */
-#define MARK_ERR               0x01    /* Bad address mark */
-#define TRK0_ERR               0x02    /* couldn't find track 0 */
-#define ABRT_ERR               0x04    /* Command aborted */
-#define MCR_ERR                        0x08    /* media change request */
-#define ID_ERR                 0x10    /* ID field not found */
-#define MC_ERR                 0x20    /* media changed */
-#define ECC_ERR                        0x40    /* Uncorrectable ECC error */
-#define BBD_ERR                        0x80    /* pre-EIDE meaning:  block marked bad */
-#define ICRC_ERR               0x80    /* new meaning:  CRC error during transfer */
-
-/*
- * Command Header sizes for IOCTL commands
- *     HDIO_DRIVE_CMD, HDIO_DRIVE_TASK, and HDIO_DRIVE_TASKFILE
- */
-
-#if 0
-#include <asm/hdreg.h>
-typedef ide_ioreg_t task_ioreg_t;
-#else
-typedef unsigned char task_ioreg_t;
-#endif
-
-#define HDIO_DRIVE_CMD_HDR_SIZE                4*sizeof(task_ioreg_t)
-#define HDIO_DRIVE_TASK_HDR_SIZE       8*sizeof(task_ioreg_t)
-#define HDIO_DRIVE_HOB_HDR_SIZE                8*sizeof(task_ioreg_t)
-
-#define IDE_DRIVE_TASK_INVALID         -1
-#define IDE_DRIVE_TASK_NO_DATA         0
-#define IDE_DRIVE_TASK_SET_XFER                1
-
-#define IDE_DRIVE_TASK_IN              2
-
-#define IDE_DRIVE_TASK_OUT             3
-#define IDE_DRIVE_TASK_RAW_WRITE       4
-
-struct hd_drive_cmd_hdr {
-       task_ioreg_t command;
-       task_ioreg_t sector_number;
-       task_ioreg_t feature;
-       task_ioreg_t sector_count;
-};
-
-typedef struct hd_drive_task_hdr {
-       task_ioreg_t data;
-       task_ioreg_t feature;
-       task_ioreg_t sector_count;
-       task_ioreg_t sector_number;
-       task_ioreg_t low_cylinder;
-       task_ioreg_t high_cylinder;
-       task_ioreg_t device_head;
-       task_ioreg_t command;
-} task_struct_t;
-
-typedef struct hd_drive_hob_hdr {
-       task_ioreg_t data;
-       task_ioreg_t feature;
-       task_ioreg_t sector_count;
-       task_ioreg_t sector_number;
-       task_ioreg_t low_cylinder;
-       task_ioreg_t high_cylinder;
-       task_ioreg_t device_head;
-       task_ioreg_t control;
-} hob_struct_t;
-
-typedef union ide_reg_valid_s {
-       unsigned all                            : 16;
-       struct {
-               unsigned data                   : 1;
-               unsigned error_feature          : 1;
-               unsigned sector                 : 1;
-               unsigned nsector                : 1;
-               unsigned lcyl                   : 1;
-               unsigned hcyl                   : 1;
-               unsigned select                 : 1;
-               unsigned status_command         : 1;
-
-               unsigned data_hob               : 1;
-               unsigned error_feature_hob      : 1;
-               unsigned sector_hob             : 1;
-               unsigned nsector_hob            : 1;
-               unsigned lcyl_hob               : 1;
-               unsigned hcyl_hob               : 1;
-               unsigned select_hob             : 1;
-               unsigned control_hob            : 1;
-       } b;
-} ide_reg_valid_t;
-
-/*
- * Define standard taskfile in/out register
- */
-#define IDE_TASKFILE_STD_OUT_FLAGS     0xFE
-#define IDE_TASKFILE_STD_IN_FLAGS      0xFE
-#define IDE_HOB_STD_OUT_FLAGS          0xC0
-#define IDE_HOB_STD_IN_FLAGS           0xC0
-
-typedef struct ide_task_request_s {
-       task_ioreg_t    io_ports[8];
-       task_ioreg_t    hob_ports[8];
-       ide_reg_valid_t out_flags;
-       ide_reg_valid_t in_flags;
-       int             data_phase;
-       int             req_cmd;
-       unsigned long   out_size;
-       unsigned long   in_size;
-} ide_task_request_t;
-
-typedef struct ide_ioctl_request_s {
-       ide_task_request_t      *task_request;
-       unsigned char           *out_buffer;
-       unsigned char           *in_buffer;
-} ide_ioctl_request_t;
-
-#define TASKFILE_INVALID               0x7fff
-#define TASKFILE_48                    0x8000
-
-#define TASKFILE_NO_DATA               0x0000
-
-#define TASKFILE_IN                    0x0001
-#define TASKFILE_MULTI_IN              0x0002
-
-#define TASKFILE_OUT                   0x0004
-#define TASKFILE_MULTI_OUT             0x0008
-#define TASKFILE_IN_OUT                        0x0010
-
-#define TASKFILE_IN_DMA                        0x0020
-#define TASKFILE_OUT_DMA               0x0040
-#define TASKFILE_IN_DMAQ               0x0080
-#define TASKFILE_OUT_DMAQ              0x0100
-
-#define TASKFILE_P_IN                  0x0200
-#define TASKFILE_P_OUT                 0x0400
-#define TASKFILE_P_IN_DMA              0x0800
-#define TASKFILE_P_OUT_DMA             0x1000
-#define TASKFILE_P_IN_DMAQ             0x2000
-#define TASKFILE_P_OUT_DMAQ            0x4000
-
-/* ATA/ATAPI Commands pre T13 Spec */
-#define WIN_NOP                                0x00
-#define CFA_REQ_EXT_ERROR_CODE         0x03 /* CFA Request Extended Error Code */
-#define WIN_SRST                       0x08 /* ATAPI soft reset command */
-#define WIN_DEVICE_RESET               0x08
-#define WIN_RESTORE                    0x10
-#define WIN_READ                       0x20 /* 28-Bit */
-#define WIN_READ_EXT                   0x24 /* 48-Bit */
-#define WIN_READDMA_EXT                        0x25 /* 48-Bit */
-#define WIN_READDMA_QUEUED_EXT         0x26 /* 48-Bit */
-#define WIN_READ_NATIVE_MAX_EXT                0x27 /* 48-Bit */
-#define WIN_MULTREAD_EXT               0x29 /* 48-Bit */
-#define WIN_WRITE                      0x30 /* 28-Bit */
-#define WIN_WRITE_EXT                  0x34 /* 48-Bit */
-#define WIN_WRITEDMA_EXT               0x35 /* 48-Bit */
-#define WIN_WRITEDMA_QUEUED_EXT                0x36 /* 48-Bit */
-#define WIN_SET_MAX_EXT                        0x37 /* 48-Bit */
-#define CFA_WRITE_SECT_WO_ERASE                0x38 /* CFA Write Sectors without erase */
-#define WIN_MULTWRITE_EXT              0x39 /* 48-Bit */
-#define WIN_WRITE_VERIFY               0x3C /* 28-Bit */
-#define WIN_VERIFY                     0x40 /* 28-Bit - Read Verify Sectors */
-#define WIN_VERIFY_EXT                 0x42 /* 48-Bit */
-#define WIN_FORMAT                     0x50
-#define WIN_INIT                       0x60
-#define WIN_SEEK                       0x70
-#define CFA_TRANSLATE_SECTOR           0x87 /* CFA Translate Sector */
-#define WIN_DIAGNOSE                   0x90
-#define WIN_SPECIFY                    0x91 /* set drive geometry translation */
-#define WIN_DOWNLOAD_MICROCODE         0x92
-#define WIN_STANDBYNOW2                        0x94
-#define WIN_SETIDLE2                   0x97
-#define WIN_CHECKPOWERMODE2            0x98
-#define WIN_SLEEPNOW2                  0x99
-#define WIN_PACKETCMD                  0xA0 /* Send a packet command. */
-#define WIN_PIDENTIFY                  0xA1 /* identify ATAPI device   */
-#define WIN_QUEUED_SERVICE             0xA2
-#define WIN_SMART                      0xB0 /* self-monitoring and reporting */
-#define CFA_ERASE_SECTORS              0xC0
-#define WIN_MULTREAD                   0xC4 /* read sectors using multiple mode*/
-#define WIN_MULTWRITE                  0xC5 /* write sectors using multiple mode */
-#define WIN_SETMULT                    0xC6 /* enable/disable multiple mode */
-#define WIN_READDMA_QUEUED             0xC7 /* read sectors using Queued DMA transfers */
-#define WIN_READDMA                    0xC8 /* read sectors using DMA transfers */
-#define WIN_WRITEDMA                   0xCA /* write sectors using DMA transfers */
-#define WIN_WRITEDMA_QUEUED            0xCC /* write sectors using Queued DMA transfers */
-#define CFA_WRITE_MULTI_WO_ERASE       0xCD /* CFA Write multiple without erase */
-#define WIN_GETMEDIASTATUS             0xDA    
-#define WIN_DOORLOCK                   0xDE /* lock door on removable drives */
-#define WIN_DOORUNLOCK                 0xDF /* unlock door on removable drives */
-#define WIN_STANDBYNOW1                        0xE0
-#define WIN_IDLEIMMEDIATE              0xE1 /* force drive to become "ready" */
-#define WIN_STANDBY                    0xE2 /* Set device in Standby Mode */
-#define WIN_SETIDLE1                   0xE3
-#define WIN_READ_BUFFER                        0xE4 /* force read only 1 sector */
-#define WIN_CHECKPOWERMODE1            0xE5
-#define WIN_SLEEPNOW1                  0xE6
-#define WIN_FLUSH_CACHE                        0xE7
-#define WIN_WRITE_BUFFER               0xE8 /* force write only 1 sector */
-#define WIN_FLUSH_CACHE_EXT            0xEA /* 48-Bit */
-#define WIN_IDENTIFY                   0xEC /* ask drive to identify itself    */
-#define WIN_MEDIAEJECT                 0xED
-#define WIN_IDENTIFY_DMA               0xEE /* same as WIN_IDENTIFY, but DMA */
-#define WIN_SETFEATURES                        0xEF /* set special drive features */
-#define EXABYTE_ENABLE_NEST            0xF0
-#define WIN_SECURITY_SET_PASS          0xF1
-#define WIN_SECURITY_UNLOCK            0xF2
-#define WIN_SECURITY_ERASE_PREPARE     0xF3
-#define WIN_SECURITY_ERASE_UNIT                0xF4
-#define WIN_SECURITY_FREEZE_LOCK       0xF5
-#define WIN_SECURITY_DISABLE           0xF6
-#define WIN_READ_NATIVE_MAX            0xF8 /* return the native maximum address */
-#define WIN_SET_MAX                    0xF9
-#define DISABLE_SEAGATE                        0xFB
-
-/* WIN_SMART sub-commands */
-
-#define SMART_READ_VALUES              0xD0
-#define SMART_READ_THRESHOLDS          0xD1
-#define SMART_AUTOSAVE                 0xD2
-#define SMART_SAVE                     0xD3
-#define SMART_IMMEDIATE_OFFLINE                0xD4
-#define SMART_READ_LOG_SECTOR          0xD5
-#define SMART_WRITE_LOG_SECTOR         0xD6
-#define SMART_WRITE_THRESHOLDS         0xD7
-#define SMART_ENABLE                   0xD8
-#define SMART_DISABLE                  0xD9
-#define SMART_STATUS                   0xDA
-#define SMART_AUTO_OFFLINE             0xDB
-
-/* Password used in TF4 & TF5 executing SMART commands */
-
-#define SMART_LCYL_PASS                        0x4F
-#define SMART_HCYL_PASS                        0xC2
-               
-/* WIN_SETFEATURES sub-commands */
-
-#define SETFEATURES_EN_WCACHE  0x02    /* Enable write cache */
-#define SETFEATURES_XFER       0x03    /* Set transfer mode */
-#      define XFER_UDMA_7      0x47    /* 0100|0111 */
-#      define XFER_UDMA_6      0x46    /* 0100|0110 */
-#      define XFER_UDMA_5      0x45    /* 0100|0101 */
-#      define XFER_UDMA_4      0x44    /* 0100|0100 */
-#      define XFER_UDMA_3      0x43    /* 0100|0011 */
-#      define XFER_UDMA_2      0x42    /* 0100|0010 */
-#      define XFER_UDMA_1      0x41    /* 0100|0001 */
-#      define XFER_UDMA_0      0x40    /* 0100|0000 */
-#      define XFER_MW_DMA_2    0x22    /* 0010|0010 */
-#      define XFER_MW_DMA_1    0x21    /* 0010|0001 */
-#      define XFER_MW_DMA_0    0x20    /* 0010|0000 */
-#      define XFER_SW_DMA_2    0x12    /* 0001|0010 */
-#      define XFER_SW_DMA_1    0x11    /* 0001|0001 */
-#      define XFER_SW_DMA_0    0x10    /* 0001|0000 */
-#      define XFER_PIO_4       0x0C    /* 0000|1100 */
-#      define XFER_PIO_3       0x0B    /* 0000|1011 */
-#      define XFER_PIO_2       0x0A    /* 0000|1010 */
-#      define XFER_PIO_1       0x09    /* 0000|1001 */
-#      define XFER_PIO_0       0x08    /* 0000|1000 */
-#      define XFER_PIO_SLOW    0x00    /* 0000|0000 */
-#define SETFEATURES_DIS_DEFECT 0x04    /* Disable Defect Management */
-#define SETFEATURES_EN_APM     0x05    /* Enable advanced power management */
-#define SETFEATURES_DIS_MSN    0x31    /* Disable Media Status Notification */
-#define SETFEATURES_EN_AAM     0x42    /* Enable Automatic Acoustic Management */
-#define SETFEATURES_DIS_RLA    0x55    /* Disable read look-ahead feature */
-#define SETFEATURES_EN_RI      0x5D    /* Enable release interrupt */
-#define SETFEATURES_EN_SI      0x5E    /* Enable SERVICE interrupt */
-#define SETFEATURES_DIS_RPOD   0x66    /* Disable reverting to power on defaults */
-#define SETFEATURES_DIS_WCACHE 0x82    /* Disable write cache */
-#define SETFEATURES_EN_DEFECT  0x84    /* Enable Defect Management */
-#define SETFEATURES_DIS_APM    0x85    /* Disable advanced power management */
-#define SETFEATURES_EN_MSN     0x95    /* Enable Media Status Notification */
-#define SETFEATURES_EN_RLA     0xAA    /* Enable read look-ahead feature */
-#define SETFEATURES_PREFETCH   0xAB    /* Sets drive prefetch value */
-#define SETFEATURES_DIS_AAM    0xC2    /* Disable Automatic Acoustic Management */
-#define SETFEATURES_EN_RPOD    0xCC    /* Enable reverting to power on defaults */
-#define SETFEATURES_DIS_RI     0xDD    /* Disable release interrupt */
-#define SETFEATURES_DIS_SI     0xDE    /* Disable SERVICE interrupt */
-
-/* WIN_SECURITY sub-commands */
-
-#define SECURITY_SET_PASSWORD          0xBA
-#define SECURITY_UNLOCK                        0xBB
-#define SECURITY_ERASE_PREPARE         0xBC
-#define SECURITY_ERASE_UNIT            0xBD
-#define SECURITY_FREEZE_LOCK           0xBE
-#define SECURITY_DISABLE_PASSWORD      0xBF
-
-struct hd_geometry {
-      unsigned char heads;
-      unsigned char sectors;
-      unsigned short cylinders;
-      unsigned long start;
-};
-
-/* BIG GEOMETRY */
-struct hd_big_geometry {
-       unsigned char heads;
-       unsigned char sectors;
-       unsigned int cylinders;
-       unsigned long start;
-};
-
-/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x030n/0x031n */
-#define HDIO_GETGEO            0x0301  /* get device geometry */
-#define HDIO_GET_UNMASKINTR    0x0302  /* get current unmask setting */
-#define HDIO_GET_MULTCOUNT     0x0304  /* get current IDE blockmode setting */
-#define HDIO_GET_QDMA          0x0305  /* get use-qdma flag */
-#define HDIO_OBSOLETE_IDENTITY 0x0307  /* OBSOLETE, DO NOT USE: returns 142 bytes */
-#define HDIO_GET_KEEPSETTINGS  0x0308  /* get keep-settings-on-reset flag */
-#define HDIO_GET_32BIT         0x0309  /* get current io_32bit setting */
-#define HDIO_GET_NOWERR                0x030a  /* get ignore-write-error flag */
-#define HDIO_GET_DMA           0x030b  /* get use-dma flag */
-#define HDIO_GET_NICE          0x030c  /* get nice flags */
-#define HDIO_GET_IDENTITY      0x030d  /* get IDE identification info */
-#define HDIO_GET_WCACHE                0x030e  /* get write cache mode on|off */
-#define HDIO_GET_ACOUSTIC      0x030f  /* get acoustic value */
-#define        HDIO_GET_ADDRESS        0x0310  /* */
-
-#define HDIO_GET_BUSSTATE      0x031a  /* get the bus state of the hwif */
-#define HDIO_TRISTATE_HWIF     0x031b  /* execute a channel tristate */
-#define HDIO_DRIVE_RESET       0x031c  /* execute a device reset */
-#define HDIO_DRIVE_TASKFILE    0x031d  /* execute raw taskfile */
-#define HDIO_DRIVE_TASK                0x031e  /* execute task and special drive command */
-#define HDIO_DRIVE_CMD         0x031f  /* execute a special drive command */
-
-#define HDIO_DRIVE_CMD_AEB     HDIO_DRIVE_TASK
-
-/* hd/ide ctl's that pass (arg) non-ptr values are numbered 0x032n/0x033n */
-#define HDIO_SET_MULTCOUNT     0x0321  /* change IDE blockmode */
-#define HDIO_SET_UNMASKINTR    0x0322  /* permit other irqs during I/O */
-#define HDIO_SET_KEEPSETTINGS  0x0323  /* keep ioctl settings on reset */
-#define HDIO_SET_32BIT         0x0324  /* change io_32bit flags */
-#define HDIO_SET_NOWERR                0x0325  /* change ignore-write-error flag */
-#define HDIO_SET_DMA           0x0326  /* change use-dma flag */
-#define HDIO_SET_PIO_MODE      0x0327  /* reconfig interface to new speed */
-#define HDIO_SCAN_HWIF         0x0328  /* register and (re)scan interface */
-#define HDIO_SET_NICE          0x0329  /* set nice flags */
-#define HDIO_UNREGISTER_HWIF   0x032a  /* unregister interface */
-#define HDIO_SET_WCACHE                0x032b  /* change write cache enable-disable */
-#define HDIO_SET_ACOUSTIC      0x032c  /* change acoustic behavior */
-#define HDIO_SET_BUSSTATE      0x032d  /* set the bus state of the hwif */
-#define HDIO_SET_QDMA          0x032e  /* change use-qdma flag */
-#define HDIO_SET_ADDRESS       0x032f  /* change lba addressing modes */
-
-/* bus states */
-enum {
-       BUSSTATE_OFF = 0,
-       BUSSTATE_ON,
-       BUSSTATE_TRISTATE
-};
-
-/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x033n/0x033n */
-#define HDIO_GETGEO_BIG                0x0330  /* */
-#define HDIO_GETGEO_BIG_RAW    0x0331  /* */
-
-#define __NEW_HD_DRIVE_ID
-/* structure returned by HDIO_GET_IDENTITY,
- * as per ANSI NCITS ATA6 rev.1b spec
- */
-struct hd_driveid {
-       unsigned short  config;         /* lots of obsolete bit flags */
-       unsigned short  cyls;           /* Obsolete, "physical" cyls */
-       unsigned short  reserved2;      /* reserved (word 2) */
-       unsigned short  heads;          /* Obsolete, "physical" heads */
-       unsigned short  track_bytes;    /* unformatted bytes per track */
-       unsigned short  sector_bytes;   /* unformatted bytes per sector */
-       unsigned short  sectors;        /* Obsolete, "physical" sectors per track */
-       unsigned short  vendor0;        /* vendor unique */
-       unsigned short  vendor1;        /* vendor unique */
-       unsigned short  vendor2;        /* Retired vendor unique */
-       unsigned char   serial_no[20];  /* 0 = not_specified */
-       unsigned short  buf_type;       /* Retired */
-       unsigned short  buf_size;       /* Retired, 512 byte increments
-                                        * 0 = not_specified
-                                        */
-       unsigned short  ecc_bytes;      /* for r/w long cmds; 0 = not_specified */
-       unsigned char   fw_rev[8];      /* 0 = not_specified */
-       unsigned char   model[40];      /* 0 = not_specified */
-       unsigned char   max_multsect;   /* 0=not_implemented */
-       unsigned char   vendor3;        /* vendor unique */
-       unsigned short  dword_io;       /* 0=not_implemented; 1=implemented */
-       unsigned char   vendor4;        /* vendor unique */
-       unsigned char   capability;     /* (upper byte of word 49)
-                                        *  3:  IORDYsup
-                                        *  2:  IORDYsw
-                                        *  1:  LBA
-                                        *  0:  DMA
-                                        */
-       unsigned short  reserved50;     /* reserved (word 50) */
-       unsigned char   vendor5;        /* Obsolete, vendor unique */
-       unsigned char   tPIO;           /* Obsolete, 0=slow, 1=medium, 2=fast */
-       unsigned char   vendor6;        /* Obsolete, vendor unique */
-       unsigned char   tDMA;           /* Obsolete, 0=slow, 1=medium, 2=fast */
-       unsigned short  field_valid;    /* (word 53)
-                                        *  2:  ultra_ok        word  88
-                                        *  1:  eide_ok         words 64-70
-                                        *  0:  cur_ok          words 54-58
-                                        */
-       unsigned short  cur_cyls;       /* Obsolete, logical cylinders */
-       unsigned short  cur_heads;      /* Obsolete, l heads */
-       unsigned short  cur_sectors;    /* Obsolete, l sectors per track */
-       unsigned short  cur_capacity0;  /* Obsolete, l total sectors on drive */
-       unsigned short  cur_capacity1;  /* Obsolete, (2 words, misaligned int)     */
-       unsigned char   multsect;       /* current multiple sector count */
-       unsigned char   multsect_valid; /* when (bit0==1) multsect is ok */
-       unsigned int    lba_capacity;   /* Obsolete, total number of sectors */
-       unsigned short  dma_1word;      /* Obsolete, single-word dma info */
-       unsigned short  dma_mword;      /* multiple-word dma info */
-       unsigned short  eide_pio_modes; /* bits 0:mode3 1:mode4 */
-       unsigned short  eide_dma_min;   /* min mword dma cycle time (ns) */
-       unsigned short  eide_dma_time;  /* recommended mword dma cycle time (ns) */
-       unsigned short  eide_pio;       /* min cycle time (ns), no IORDY  */
-       unsigned short  eide_pio_iordy; /* min cycle time (ns), with IORDY */
-       unsigned short  words69_70[2];  /* reserved words 69-70
-                                        * future command overlap and queuing
-                                        */
-       /* HDIO_GET_IDENTITY currently returns only words 0 through 70 */
-       unsigned short  words71_74[4];  /* reserved words 71-74
-                                        * for IDENTIFY PACKET DEVICE command
-                                        */
-       unsigned short  queue_depth;    /* (word 75)
-                                        * 15:5 reserved
-                                        *  4:0 Maximum queue depth -1
-                                        */
-       unsigned short  words76_79[4];  /* reserved words 76-79 */
-       unsigned short  major_rev_num;  /* (word 80) */
-       unsigned short  minor_rev_num;  /* (word 81) */
-       unsigned short  command_set_1;  /* (word 82) supported
-                                        * 15:  Obsolete
-                                        * 14:  NOP command
-                                        * 13:  READ_BUFFER
-                                        * 12:  WRITE_BUFFER
-                                        * 11:  Obsolete
-                                        * 10:  Host Protected Area
-                                        *  9:  DEVICE Reset
-                                        *  8:  SERVICE Interrupt
-                                        *  7:  Release Interrupt
-                                        *  6:  look-ahead
-                                        *  5:  write cache
-                                        *  4:  PACKET Command
-                                        *  3:  Power Management Feature Set
-                                        *  2:  Removable Feature Set
-                                        *  1:  Security Feature Set
-                                        *  0:  SMART Feature Set
-                                        */
-       unsigned short  command_set_2;  /* (word 83)
-                                        * 15:  Shall be ZERO
-                                        * 14:  Shall be ONE
-                                        * 13:  FLUSH CACHE EXT
-                                        * 12:  FLUSH CACHE
-                                        * 11:  Device Configuration Overlay
-                                        * 10:  48-bit Address Feature Set
-                                        *  9:  Automatic Acoustic Management
-                                        *  8:  SET MAX security
-                                        *  7:  reserved 1407DT PARTIES
-                                        *  6:  SetF sub-command Power-Up
-                                        *  5:  Power-Up in Standby Feature Set
-                                        *  4:  Removable Media Notification
-                                        *  3:  APM Feature Set
-                                        *  2:  CFA Feature Set
-                                        *  1:  READ/WRITE DMA QUEUED
-                                        *  0:  Download MicroCode
-                                        */
-       unsigned short  cfsse;          /* (word 84)
-                                        * cmd set-feature supported extensions
-                                        * 15:  Shall be ZERO
-                                        * 14:  Shall be ONE
-                                        * 13:3 reserved
-                                        *  2:  Media Serial Number Valid
-                                        *  1:  SMART selt-test supported
-                                        *  0:  SMART error logging
-                                        */
-       unsigned short  cfs_enable_1;   /* (word 85)
-                                        * command set-feature enabled
-                                        * 15:  Obsolete
-                                        * 14:  NOP command
-                                        * 13:  READ_BUFFER
-                                        * 12:  WRITE_BUFFER
-                                        * 11:  Obsolete
-                                        * 10:  Host Protected Area
-                                        *  9:  DEVICE Reset
-                                        *  8:  SERVICE Interrupt
-                                        *  7:  Release Interrupt
-                                        *  6:  look-ahead
-                                        *  5:  write cache
-                                        *  4:  PACKET Command
-                                        *  3:  Power Management Feature Set
-                                        *  2:  Removable Feature Set
-                                        *  1:  Security Feature Set
-                                        *  0:  SMART Feature Set
-                                        */
-       unsigned short  cfs_enable_2;   /* (word 86)
-                                        * command set-feature enabled
-                                        * 15:  Shall be ZERO
-                                        * 14:  Shall be ONE
-                                        * 13:  FLUSH CACHE EXT
-                                        * 12:  FLUSH CACHE
-                                        * 11:  Device Configuration Overlay
-                                        * 10:  48-bit Address Feature Set
-                                        *  9:  Automatic Acoustic Management
-                                        *  8:  SET MAX security
-                                        *  7:  reserved 1407DT PARTIES
-                                        *  6:  SetF sub-command Power-Up
-                                        *  5:  Power-Up in Standby Feature Set
-                                        *  4:  Removable Media Notification
-                                        *  3:  APM Feature Set
-                                        *  2:  CFA Feature Set
-                                        *  1:  READ/WRITE DMA QUEUED
-                                        *  0:  Download MicroCode
-                                        */
-       unsigned short  csf_default;    /* (word 87)
-                                        * command set-feature default
-                                        * 15:  Shall be ZERO
-                                        * 14:  Shall be ONE
-                                        * 13:3 reserved
-                                        *  2:  Media Serial Number Valid
-                                        *  1:  SMART selt-test supported
-                                        *  0:  SMART error logging
-                                        */
-       unsigned short  dma_ultra;      /* (word 88) */
-       unsigned short  word89;         /* reserved (word 89) */
-       unsigned short  word90;         /* reserved (word 90) */
-       unsigned short  CurAPMvalues;   /* current APM values */
-       unsigned short  word92;         /* reserved (word 92) */
-       unsigned short  hw_config;      /* hardware config (word 93)
-                                        * 15:
-                                        * 14:
-                                        * 13:
-                                        * 12:
-                                        * 11:
-                                        * 10:
-                                        *  9:
-                                        *  8:
-                                        *  7:
-                                        *  6:
-                                        *  5:
-                                        *  4:
-                                        *  3:
-                                        *  2:
-                                        *  1:
-                                        *  0:
-                                        */
-       unsigned short  acoustic;       /* (word 94)
-                                        * 15:8 Vendor's recommended value
-                                        *  7:0 current value
-                                        */
-       unsigned short  words95_99[5];  /* reserved words 95-99 */
-#if 0
-       unsigned short  words100_103[4] ;/* reserved words 100-103 */
-#else
-       unsigned long long lba_capacity_2;/* 48-bit total number of sectors */
-#endif
-       unsigned short  words104_125[22];/* reserved words 104-125 */
-       unsigned short  last_lun;       /* (word 126) */
-       unsigned short  word127;        /* (word 127) Feature Set
-                                        * Removable Media Notification
-                                        * 15:2 reserved
-                                        *  1:0 00 = not supported
-                                        *      01 = supported
-                                        *      10 = reserved
-                                        *      11 = reserved
-                                        */
-       unsigned short  dlf;            /* (word 128)
-                                        * device lock function
-                                        * 15:9 reserved
-                                        *  8   security level 1:max 0:high
-                                        *  7:6 reserved
-                                        *  5   enhanced erase
-                                        *  4   expire
-                                        *  3   frozen
-                                        *  2   locked
-                                        *  1   en/disabled
-                                        *  0   capability
-                                        */
-       unsigned short  csfo;           /*  (word 129)
-                                        * current set features options
-                                        * 15:4 reserved
-                                        *  3:  auto reassign
-                                        *  2:  reverting
-                                        *  1:  read-look-ahead
-                                        *  0:  write cache
-                                        */
-       unsigned short  words130_155[26];/* reserved vendor words 130-155 */
-       unsigned short  word156;        /* reserved vendor word 156 */
-       unsigned short  words157_159[3];/* reserved vendor words 157-159 */
-       unsigned short  cfa_power;      /* (word 160) CFA Power Mode
-                                        * 15 word 160 supported
-                                        * 14 reserved
-                                        * 13
-                                        * 12
-                                        * 11:0
-                                        */
-       unsigned short  words161_175[14];/* Reserved for CFA */
-       unsigned short  words176_205[31];/* Current Media Serial Number */
-       unsigned short  words206_254[48];/* reserved words 206-254 */
-       unsigned short  integrity_word; /* (word 255)
-                                        * 15:8 Checksum
-                                        *  7:0 Signature
-                                        */
-};
-
-/*
- * IDE "nice" flags. These are used on a per drive basis to determine
- * when to be nice and give more bandwidth to the other devices which
- * share the same IDE bus.
- */
-#define IDE_NICE_DSC_OVERLAP   (0)     /* per the DSC overlap protocol */
-#define IDE_NICE_ATAPI_OVERLAP (1)     /* not supported yet */
-#define IDE_NICE_0             (2)     /* when sure that it won't affect us */
-#define IDE_NICE_1             (3)     /* when probably won't affect us much */
-#define IDE_NICE_2             (4)     /* when we know it's on our expense */
-
-#ifdef __KERNEL__
-/*
- * These routines are used for kernel command line parameters from main.c:
- */
-#include <xeno/config.h>
-
-#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
-int ide_register(int io_port, int ctl_port, int irq);
-void ide_unregister(unsigned int);
-#endif /* CONFIG_BLK_DEV_IDE || CONFIG_BLK_DEV_IDE_MODULE */
-
-#endif  /* __KERNEL__ */
-
-#endif /* _LINUX_HDREG_H */
diff --git a/xen/include/xeno/hdsmart.h b/xen/include/xeno/hdsmart.h
deleted file mode 100644 (file)
index 7974a47..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * linux/include/linux/hdsmart.h
- *
- * Copyright (C) 1999-2000     Michael Cornwell <cornwell@acm.org>
- * Copyright (C) 2000          Andre Hedrick <andre@linux-ide.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * You should have received a copy of the GNU General Public License
- * (for example /usr/src/linux/COPYING); if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _LINUX_HDSMART_H
-#define _LINUX_HDSMART_H
-
-#define OFFLINE_FULL_SCAN              0
-#define SHORT_SELF_TEST                        1
-#define EXTEND_SELF_TEST               2
-#define SHORT_CAPTIVE_SELF_TEST                129
-#define EXTEND_CAPTIVE_SELF_TEST       130
-
-/* smart_attribute is the vendor specific in SFF-8035 spec */
-typedef struct ata_smart_attribute_s {
-       unsigned char                   id;
-       unsigned short                  status_flag;
-       unsigned char                   normalized;
-       unsigned char                   worse_normal;
-       unsigned char                   raw[6];
-       unsigned char                   reserv;
-} __attribute__ ((packed)) ata_smart_attribute_t;
-
-/* smart_values is format of the read drive Atrribute command */
-typedef struct ata_smart_values_s {
-       unsigned short                  revnumber;
-       ata_smart_attribute_t           vendor_attributes [30];
-        unsigned char                  offline_data_collection_status;
-        unsigned char                  self_test_exec_status;
-       unsigned short                  total_time_to_complete_off_line;
-       unsigned char                   vendor_specific_366;
-       unsigned char                   offline_data_collection_capability;
-       unsigned short                  smart_capability;
-       unsigned char                   errorlog_capability;
-       unsigned char                   vendor_specific_371;
-       unsigned char                   short_test_completion_time;
-       unsigned char                   extend_test_completion_time;
-       unsigned char                   reserved_374_385 [12];
-       unsigned char                   vendor_specific_386_509 [125];
-       unsigned char                   chksum;
-} __attribute__ ((packed)) ata_smart_values_t;
-
-/* Smart Threshold data structures */
-/* Vendor attribute of SMART Threshold */
-typedef struct ata_smart_threshold_entry_s {
-       unsigned char                   id;
-       unsigned char                   normalized_threshold;
-       unsigned char                   reserved[10];
-} __attribute__ ((packed)) ata_smart_threshold_entry_t;
-
-/* Format of Read SMART THreshold Command */
-typedef struct ata_smart_thresholds_s {
-       unsigned short                  revnumber;
-       ata_smart_threshold_entry_t     thres_entries[30];
-       unsigned char                   reserved[149];
-       unsigned char                   chksum;
-} __attribute__ ((packed)) ata_smart_thresholds_t;
-
-typedef struct ata_smart_errorlog_command_struct_s {
-       unsigned char                   devicecontrolreg;
-       unsigned char                   featuresreg;
-       unsigned char                   sector_count;
-       unsigned char                   sector_number;
-       unsigned char                   cylinder_low;
-       unsigned char                   cylinder_high;
-       unsigned char                   drive_head;
-       unsigned char                   commandreg;
-       unsigned int                    timestamp;
-} __attribute__ ((packed)) ata_smart_errorlog_command_struct_t;
-
-typedef struct ata_smart_errorlog_error_struct_s {
-       unsigned char                   error_condition;
-       unsigned char                   extended_error[14];
-       unsigned char                   state;
-       unsigned short                  timestamp;
-} __attribute__ ((packed)) ata_smart_errorlog_error_struct_t;
-
-typedef struct ata_smart_errorlog_struct_s {
-       ata_smart_errorlog_command_struct_t     commands[6];
-       ata_smart_errorlog_error_struct_t       error_struct;
-} __attribute__ ((packed)) ata_smart_errorlog_struct_t;
-
-typedef struct ata_smart_errorlog_s {
-       unsigned char                   revnumber;
-       unsigned char                   error_log_pointer;
-       ata_smart_errorlog_struct_t     errorlog_struct[5];
-       unsigned short                  ata_error_count;
-       unsigned short                  non_fatal_count;
-       unsigned short                  drive_timeout_count;
-       unsigned char                   reserved[53];
-       unsigned char                   chksum;
-} __attribute__ ((packed)) ata_smart_errorlog_t;
-
-typedef struct ata_smart_selftestlog_struct_s {
-       unsigned char                   selftestnumber;
-       unsigned char                   selfteststatus;
-       unsigned short                  timestamp;
-       unsigned char                   selftestfailurecheckpoint;
-       unsigned int                    lbafirstfailure;
-       unsigned char                   vendorspecific[15];
-} __attribute__ ((packed)) ata_smart_selftestlog_struct_t;
-
-typedef struct ata_smart_selftestlog_s {
-       unsigned short                  revnumber;
-       ata_smart_selftestlog_struct_t  selftest_struct[21];
-       unsigned char                   vendorspecific[2];
-       unsigned char                   mostrecenttest;
-       unsigned char                   resevered[2];
-       unsigned char                   chksum;
-} __attribute__ ((packed)) ata_smart_selftestlog_t;
-
-#endif /* _LINUX_HDSMART_H */
diff --git a/xen/include/xeno/ide.h b/xen/include/xeno/ide.h
deleted file mode 100644 (file)
index 0dfa790..0000000
+++ /dev/null
@@ -1,1105 +0,0 @@
-#ifndef _IDE_H
-#define _IDE_H
-/*
- *  linux/include/linux/ide.h
- *
- *  Copyright (C) 1994-1998  Linus Torvalds & authors
- */
-
-#include <xeno/config.h>
-#include <xeno/init.h>
-#include <xeno/ioport.h>
-#include <xeno/hdreg.h>
-#include <xeno/hdsmart.h>
-#include <xeno/major.h>
-#include <xeno/blkdev.h>
-#include <xeno/timer.h>
-/*#include <xeno/devfs_fs_kernel.h>*/
-#include <asm/hdreg.h>
-
-/*
- * This is the multiple IDE interface driver, as evolved from hd.c.
- * It supports up to four IDE interfaces, on one or more IRQs (usually 14 & 15).
- * There can be up to two drives per interface, as per the ATA-2 spec.
- *
- * Primary i/f:    ide0: major=3;  (hda)         minor=0; (hdb)         minor=64
- * Secondary i/f:  ide1: major=22; (hdc or hd1a) minor=0; (hdd or hd1b) minor=64
- * Tertiary i/f:   ide2: major=33; (hde)         minor=0; (hdf)         minor=64
- * Quaternary i/f: ide3: major=34; (hdg)         minor=0; (hdh)         minor=64
- */
-
-/******************************************************************************
- * IDE driver configuration options (play with these as desired):
- *
- * REALLY_SLOW_IO can be defined in ide.c and ide-cd.c, if necessary
- */
-#undef REALLY_FAST_IO                  /* define if ide ports are perfect */
-#define INITIAL_MULT_COUNT     0       /* off=0; on=2,4,8,16,32, etc.. */
-
-#ifndef SUPPORT_SLOW_DATA_PORTS                /* 1 to support slow data ports */
-#define SUPPORT_SLOW_DATA_PORTS        1       /* 0 to reduce kernel size */
-#endif
-#ifndef SUPPORT_VLB_SYNC               /* 1 to support weird 32-bit chips */
-#define SUPPORT_VLB_SYNC       1       /* 0 to reduce kernel size */
-#endif
-#ifndef DISK_RECOVERY_TIME             /* off=0; on=access_delay_time */
-#define DISK_RECOVERY_TIME     0       /*  for hardware that needs it */
-#endif
-#ifndef OK_TO_RESET_CONTROLLER         /* 1 needed for good error recovery */
-#define OK_TO_RESET_CONTROLLER 1       /* 0 for use with AH2372A/B interface */
-#endif
-#ifndef FANCY_STATUS_DUMPS             /* 1 for human-readable drive errors */
-#define FANCY_STATUS_DUMPS     1       /* 0 to reduce kernel size */
-#endif
-
-#ifdef CONFIG_BLK_DEV_CMD640
-#if 0  /* change to 1 when debugging cmd640 problems */
-void cmd640_dump_regs (void);
-#define CMD640_DUMP_REGS cmd640_dump_regs() /* for debugging cmd640 chipset */
-#endif
-#endif  /* CONFIG_BLK_DEV_CMD640 */
-
-#ifndef DISABLE_IRQ_NOSYNC
-#define DISABLE_IRQ_NOSYNC     0
-#endif
-
-/*
- * IDE_DRIVE_CMD is used to implement many features of the hdparm utility
- */
-#define IDE_DRIVE_CMD                  99      /* (magic) undef to reduce kernel size*/
-
-#define IDE_DRIVE_TASK                 98
-
-/*
- * IDE_DRIVE_TASKFILE is used to implement many features needed for raw tasks
- */
-#define IDE_DRIVE_TASKFILE             97
-
-/*
- *  "No user-serviceable parts" beyond this point  :)
- *****************************************************************************/
-
-typedef unsigned char  byte;   /* used everywhere */
-
-/*
- * Probably not wise to fiddle with these
- */
-#define ERROR_MAX      8       /* Max read/write errors per sector */
-#define ERROR_RESET    3       /* Reset controller every 4th retry */
-#define ERROR_RECAL    1       /* Recalibrate every 2nd retry */
-
-/*
- * state flags
- */
-#define DMA_PIO_RETRY  1       /* retrying in PIO */
-
-/*
- * Ensure that various configuration flags have compatible settings
- */
-#ifdef REALLY_SLOW_IO
-#undef REALLY_FAST_IO
-#endif
-
-#define HWIF(drive)            ((ide_hwif_t *)((drive)->hwif))
-#define HWGROUP(drive)         ((ide_hwgroup_t *)(HWIF(drive)->hwgroup))
-
-/*
- * Definitions for accessing IDE controller registers
- */
-#define IDE_NR_PORTS           (10)
-
-#define IDE_DATA_OFFSET                (0)
-#define IDE_ERROR_OFFSET       (1)
-#define IDE_NSECTOR_OFFSET     (2)
-#define IDE_SECTOR_OFFSET      (3)
-#define IDE_LCYL_OFFSET                (4)
-#define IDE_HCYL_OFFSET                (5)
-#define IDE_SELECT_OFFSET      (6)
-#define IDE_STATUS_OFFSET      (7)
-#define IDE_CONTROL_OFFSET     (8)
-#define IDE_IRQ_OFFSET         (9)
-
-#define IDE_FEATURE_OFFSET     IDE_ERROR_OFFSET
-#define IDE_COMMAND_OFFSET     IDE_STATUS_OFFSET
-
-#define IDE_DATA_OFFSET_HOB    (0)
-#define IDE_ERROR_OFFSET_HOB   (1)
-#define IDE_NSECTOR_OFFSET_HOB (2)
-#define IDE_SECTOR_OFFSET_HOB  (3)
-#define IDE_LCYL_OFFSET_HOB    (4)
-#define IDE_HCYL_OFFSET_HOB    (5)
-#define IDE_SELECT_OFFSET_HOB  (6)
-#define IDE_CONTROL_OFFSET_HOB (7)
-
-#define IDE_FEATURE_OFFSET_HOB IDE_ERROR_OFFSET_HOB
-
-#define IDE_DATA_REG           (HWIF(drive)->io_ports[IDE_DATA_OFFSET])
-#define IDE_ERROR_REG          (HWIF(drive)->io_ports[IDE_ERROR_OFFSET])
-#define IDE_NSECTOR_REG                (HWIF(drive)->io_ports[IDE_NSECTOR_OFFSET])
-#define IDE_SECTOR_REG         (HWIF(drive)->io_ports[IDE_SECTOR_OFFSET])
-#define IDE_LCYL_REG           (HWIF(drive)->io_ports[IDE_LCYL_OFFSET])
-#define IDE_HCYL_REG           (HWIF(drive)->io_ports[IDE_HCYL_OFFSET])
-#define IDE_SELECT_REG         (HWIF(drive)->io_ports[IDE_SELECT_OFFSET])
-#define IDE_STATUS_REG         (HWIF(drive)->io_ports[IDE_STATUS_OFFSET])
-#define IDE_CONTROL_REG                (HWIF(drive)->io_ports[IDE_CONTROL_OFFSET])
-#define IDE_IRQ_REG            (HWIF(drive)->io_ports[IDE_IRQ_OFFSET])
-
-#define IDE_DATA_REG_HOB       (HWIF(drive)->io_ports[IDE_DATA_OFFSET])
-#define IDE_ERROR_REG_HOB      (HWIF(drive)->io_ports[IDE_ERROR_OFFSET])
-#define IDE_NSECTOR_REG_HOB    (HWIF(drive)->io_ports[IDE_NSECTOR_OFFSET])
-#define IDE_SECTOR_REG_HOB     (HWIF(drive)->io_ports[IDE_SECTOR_OFFSET])
-#define IDE_LCYL_REG_HOB       (HWIF(drive)->io_ports[IDE_LCYL_OFFSET])
-#define IDE_HCYL_REG_HOB       (HWIF(drive)->io_ports[IDE_HCYL_OFFSET])
-#define IDE_SELECT_REG_HOB     (HWIF(drive)->io_ports[IDE_SELECT_OFFSET])
-#define IDE_STATUS_REG_HOB     (HWIF(drive)->io_ports[IDE_STATUS_OFFSET])
-#define IDE_CONTROL_REG_HOB    (HWIF(drive)->io_ports[IDE_CONTROL_OFFSET])
-
-#define IDE_FEATURE_REG                IDE_ERROR_REG
-#define IDE_COMMAND_REG                IDE_STATUS_REG
-#define IDE_ALTSTATUS_REG      IDE_CONTROL_REG
-#define IDE_IREASON_REG                IDE_NSECTOR_REG
-#define IDE_BCOUNTL_REG                IDE_LCYL_REG
-#define IDE_BCOUNTH_REG                IDE_HCYL_REG
-
-#define GET_ERR()              IN_BYTE(IDE_ERROR_REG)
-#define GET_STAT()             IN_BYTE(IDE_STATUS_REG)
-#define GET_ALTSTAT()          IN_BYTE(IDE_CONTROL_REG)
-#define OK_STAT(stat,good,bad) (((stat)&((good)|(bad)))==(good))
-#define BAD_R_STAT             (BUSY_STAT   | ERR_STAT)
-#define BAD_W_STAT             (BAD_R_STAT  | WRERR_STAT)
-#define BAD_STAT               (BAD_R_STAT  | DRQ_STAT)
-#define DRIVE_READY            (READY_STAT  | SEEK_STAT)
-#define DATA_READY             (DRQ_STAT)
-
-/*
- * Some more useful definitions
- */
-#define IDE_MAJOR_NAME "hd"    /* the same for all i/f; see also genhd.c */
-#define MAJOR_NAME     IDE_MAJOR_NAME
-#define PARTN_BITS     6       /* number of minor dev bits for partitions */
-#define PARTN_MASK     ((1<<PARTN_BITS)-1)     /* a useful bit mask */
-#define MAX_DRIVES     2       /* per interface; 2 assumed by lots of code */
-#define CASCADE_DRIVES 8       /* per interface; 8|2 assumed by lots of code */
-#define SECTOR_SIZE    512
-#define SECTOR_WORDS   (SECTOR_SIZE / 4)       /* number of 32bit words per sector */
-#define IDE_LARGE_SEEK(b1,b2,t)        (((b1) > (b2) + (t)) || ((b2) > (b1) + (t)))
-#define IDE_MIN(a,b)   ((a)<(b) ? (a):(b))
-#define IDE_MAX(a,b)   ((a)>(b) ? (a):(b))
-
-#ifndef SPLIT_WORD
-#  define SPLIT_WORD(W,HB,LB) ((HB)=(W>>8), (LB)=(W-((W>>8)<<8)))
-#endif
-#ifndef MAKE_WORD
-#  define MAKE_WORD(W,HB,LB) ((W)=((HB<<8)+LB))
-#endif
-
-
-/*
- * Timeouts for various operations:
- */
-#define WAIT_DRQ       (5*HZ/100)      /* 50msec - spec allows up to 20ms */
-#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
-#define WAIT_READY     (5*HZ)          /* 5sec - some laptops are very slow */
-#else
-#define WAIT_READY     (3*HZ/100)      /* 30msec - should be instantaneous */
-#endif /* CONFIG_APM || CONFIG_APM_MODULE */
-#define WAIT_PIDENTIFY (10*HZ) /* 10sec  - should be less than 3ms (?), if all ATAPI CD is closed at boot */
-#define WAIT_WORSTCASE (30*HZ) /* 30sec  - worst case when spinning up */
-#define WAIT_CMD       (10*HZ) /* 10sec  - maximum wait for an IRQ to happen */
-#define WAIT_MIN_SLEEP (2*HZ/100)      /* 20msec - minimum sleep time */
-
-#define SELECT_DRIVE(hwif,drive)                               \
-{                                                              \
-       if (hwif->selectproc)                                   \
-               hwif->selectproc(drive);                        \
-       OUT_BYTE((drive)->select.all, hwif->io_ports[IDE_SELECT_OFFSET]); \
-}
-
-#define SELECT_INTERRUPT(hwif,drive)                           \
-{                                                              \
-       if (hwif->intrproc)                                     \
-               hwif->intrproc(drive);                          \
-       else                                                    \
-               OUT_BYTE((drive)->ctl|2, hwif->io_ports[IDE_CONTROL_OFFSET]);   \
-}
-
-#define SELECT_MASK(hwif,drive,mask)                           \
-{                                                              \
-       if (hwif->maskproc)                                     \
-               hwif->maskproc(drive,mask);                     \
-}
-
-#define SELECT_READ_WRITE(hwif,drive,func)                     \
-{                                                              \
-       if (hwif->rwproc)                                       \
-               hwif->rwproc(drive,func);                       \
-}
-
-#define QUIRK_LIST(hwif,drive)                                 \
-{                                                              \
-       if (hwif->quirkproc)                                    \
-               (drive)->quirk_list = hwif->quirkproc(drive);   \
-}
-
-#define HOST(hwif,chipset)                                     \
-{                                                              \
-       return ((hwif)->chipset == chipset) ? 1 : 0;            \
-}
-
-#define IDE_DEBUG(lineno) \
-       printk("%s,%s,line=%d\n", __FILE__, __FUNCTION__, (lineno))
-
-/*
- * Check for an interrupt and acknowledge the interrupt status
- */
-struct hwif_s;
-typedef int (ide_ack_intr_t)(struct hwif_s *);
-
-#ifndef NO_DMA
-#define NO_DMA  255
-#endif
-
-/*
- * hwif_chipset_t is used to keep track of the specific hardware
- * chipset used by each IDE interface, if known.
- */
-typedef enum { ide_unknown,    ide_generic,    ide_pci,
-               ide_cmd640,     ide_dtc2278,    ide_ali14xx,
-               ide_qd65xx,     ide_umc8672,    ide_ht6560b,
-               ide_pdc4030,    ide_rz1000,     ide_trm290,
-               ide_cmd646,     ide_cy82c693,   ide_4drives,
-               ide_pmac,       ide_etrax100
-} hwif_chipset_t;
-
-/*
- * Structure to hold all information about the location of this port
- */
-typedef struct hw_regs_s {
-       ide_ioreg_t     io_ports[IDE_NR_PORTS]; /* task file registers */
-       int             irq;                    /* our irq number */
-       int             dma;                    /* our dma entry */
-       ide_ack_intr_t  *ack_intr;              /* acknowledge interrupt */
-       void            *priv;                  /* interface specific data */
-       hwif_chipset_t  chipset;
-} hw_regs_t;
-
-/*
- * Register new hardware with ide
- */
-int ide_register_hw(hw_regs_t *hw, struct hwif_s **hwifp);
-
-/*
- * Set up hw_regs_t structure before calling ide_register_hw (optional)
- */
-void ide_setup_ports(  hw_regs_t *hw,
-                       ide_ioreg_t base,
-                       int *offsets,
-                       ide_ioreg_t ctrl,
-                       ide_ioreg_t intr,
-                       ide_ack_intr_t *ack_intr,
-                       int irq);
-
-#include <asm/ide.h>
-
-/*
- * If the arch-dependant ide.h did not declare/define any OUT_BYTE
- * or IN_BYTE functions, we make some defaults here.
- */
-
-#ifndef HAVE_ARCH_OUT_BYTE
-#ifdef REALLY_FAST_IO
-#define OUT_BYTE(b,p)          outb((b),(p))
-#define OUT_WORD(w,p)          outw((w),(p))
-#else
-#define OUT_BYTE(b,p)          outb_p((b),(p))
-#define OUT_WORD(w,p)          outw_p((w),(p))
-#endif
-#endif
-
-#ifndef HAVE_ARCH_IN_BYTE
-#ifdef REALLY_FAST_IO
-#define IN_BYTE(p)             (byte)inb(p)
-#define IN_WORD(p)             (short)inw(p)
-#else
-#define IN_BYTE(p)             (byte)inb_p(p)
-#define IN_WORD(p)             (short)inw_p(p)
-#endif
-#endif
-
-/*
- * Now for the data we need to maintain per-drive:  ide_drive_t
- */
-
-#define ide_scsi       0x21
-#define ide_disk       0x20
-#define ide_optical    0x7
-#define ide_cdrom      0x5
-#define ide_tape       0x1
-#define ide_floppy     0x0
-
-typedef union {
-       unsigned all                    : 8;    /* all of the bits together */
-       struct {
-               unsigned set_geometry   : 1;    /* respecify drive geometry */
-               unsigned recalibrate    : 1;    /* seek to cyl 0      */
-               unsigned set_multmode   : 1;    /* set multmode count */
-               unsigned set_tune       : 1;    /* tune interface for drive */
-               unsigned reserved       : 4;    /* unused */
-       } b;
-} special_t;
-
-typedef struct ide_drive_s {
-       request_queue_t          queue; /* request queue */
-       struct ide_drive_s      *next;  /* circular list of hwgroup drives */
-       unsigned long sleep;            /* sleep until this time */
-       unsigned long service_start;    /* time we started last request */
-       unsigned long service_time;     /* service time of last request */
-       unsigned long timeout;          /* max time to wait for irq */
-       special_t       special;        /* special action flags */
-       byte     keep_settings;         /* restore settings after drive reset */
-       byte     using_dma;             /* disk is using dma for read/write */
-       byte     retry_pio;             /* retrying dma capable host in pio */
-       byte     state;                 /* retry state */
-       byte     waiting_for_dma;       /* dma currently in progress */
-       byte     unmask;                /* flag: okay to unmask other irqs */
-       byte     slow;                  /* flag: slow data port */
-       byte     bswap;                 /* flag: byte swap data */
-       byte     dsc_overlap;           /* flag: DSC overlap */
-       byte     nice1;                 /* flag: give potential excess bandwidth */
-       unsigned present        : 1;    /* drive is physically present */
-       unsigned noprobe        : 1;    /* from:  hdx=noprobe */
-       unsigned busy           : 1;    /* currently doing revalidate_disk() */
-       unsigned removable      : 1;    /* 1 if need to do check_media_change */
-       unsigned forced_geom    : 1;    /* 1 if hdx=c,h,s was given at boot */
-       unsigned no_unmask      : 1;    /* disallow setting unmask bit */
-       unsigned no_io_32bit    : 1;    /* disallow enabling 32bit I/O */
-       unsigned nobios         : 1;    /* flag: do not probe bios for drive */
-       unsigned revalidate     : 1;    /* request revalidation */
-       unsigned atapi_overlap  : 1;    /* flag: ATAPI overlap (not supported) */
-       unsigned nice0          : 1;    /* flag: give obvious excess bandwidth */
-       unsigned nice2          : 1;    /* flag: give a share in our own bandwidth */
-       unsigned doorlocking    : 1;    /* flag: for removable only: door lock/unlock works */
-       unsigned autotune       : 2;    /* 1=autotune, 2=noautotune, 0=default */
-       unsigned remap_0_to_1   : 2;    /* 0=remap if ezdrive, 1=remap, 2=noremap */
-       unsigned ata_flash      : 1;    /* 1=present, 0=default */
-       unsigned        addressing;     /* : 2; 0=28-bit, 1=48-bit, 2=64-bit */
-       byte            scsi;           /* 0=default, 1=skip current ide-subdriver for ide-scsi emulation */
-       byte            media;          /* disk, cdrom, tape, floppy, ... */
-       select_t        select;         /* basic drive/head select reg value */
-       byte            ctl;            /* "normal" value for IDE_CONTROL_REG */
-       byte            ready_stat;     /* min status value for drive ready */
-       byte            mult_count;     /* current multiple sector setting */
-       byte            mult_req;       /* requested multiple sector setting */
-       byte            tune_req;       /* requested drive tuning setting */
-       byte            io_32bit;       /* 0=16-bit, 1=32-bit, 2/3=32bit+sync */
-       byte            bad_wstat;      /* used for ignoring WRERR_STAT */
-       byte            nowerr;         /* used for ignoring WRERR_STAT */
-       byte            sect0;          /* offset of first sector for DM6:DDO */
-       unsigned int    usage;          /* current "open()" count for drive */
-       byte            head;           /* "real" number of heads */
-       byte            sect;           /* "real" sectors per track */
-       byte            bios_head;      /* BIOS/fdisk/LILO number of heads */
-       byte            bios_sect;      /* BIOS/fdisk/LILO sectors per track */
-       unsigned int    bios_cyl;       /* BIOS/fdisk/LILO number of cyls */
-       unsigned int    cyl;            /* "real" number of cyls */
-       unsigned long   capacity;       /* total number of sectors */
-       unsigned long long capacity48;  /* total number of sectors */
-       unsigned int    drive_data;     /* for use by tuneproc/selectproc as needed */
-       void              *hwif;        /* actually (ide_hwif_t *) */
-    /*wait_queue_head_t wqueue;*/      /* used to wait for drive in open() */
-       struct hd_driveid *id;          /* drive model identification info */
-       struct hd_struct  *part;        /* drive partition table */
-       char            name[4];        /* drive name, such as "hda" */
-       void            *driver;        /* (ide_driver_t *) */
-       void            *driver_data;   /* extra driver data */
-    /*devfs_handle_t   de;     */      /* directory for device */
-       struct proc_dir_entry *proc;    /* /proc/ide/ directory entry */
-       void            *settings;      /* /proc/ide/ drive settings */
-       char            driver_req[10]; /* requests specific driver */
-       int             last_lun;       /* last logical unit */
-       int             forced_lun;     /* if hdxlun was given at boot */
-       int             lun;            /* logical unit */
-       int             crc_count;      /* crc counter to reduce drive speed */
-       byte            quirk_list;     /* drive is considered quirky if set for a specific host */
-       byte            suspend_reset;  /* drive suspend mode flag, soft-reset recovers */
-       byte            init_speed;     /* transfer rate set at boot */
-       byte            current_speed;  /* current transfer rate set */
-       byte            dn;             /* now wide spread use */
-       byte            wcache;         /* status of write cache */
-       byte            acoustic;       /* acoustic management */
-       unsigned int    failures;       /* current failure count */
-       unsigned int    max_failures;   /* maximum allowed failure count */
-} ide_drive_t;
-
-/*
- * An ide_dmaproc_t() initiates/aborts DMA read/write operations on a drive.
- *
- * The caller is assumed to have selected the drive and programmed the drive's
- * sector address using CHS or LBA.  All that remains is to prepare for DMA
- * and then issue the actual read/write DMA/PIO command to the drive.
- *
- * Returns 0 if all went well.
- * Returns 1 if DMA read/write could not be started, in which case the caller
- * should either try again later, or revert to PIO for the current request.
- */
-typedef enum { ide_dma_read,   ide_dma_write,          ide_dma_begin,
-               ide_dma_end,    ide_dma_check,          ide_dma_on,
-               ide_dma_off,    ide_dma_off_quietly,    ide_dma_test_irq,
-               ide_dma_bad_drive,                      ide_dma_good_drive,
-               ide_dma_verbose,                        ide_dma_retune,
-               ide_dma_lostirq,                        ide_dma_timeout
-} ide_dma_action_t;
-
-typedef int (ide_dmaproc_t)(ide_dma_action_t, ide_drive_t *);
-
-/*
- * An ide_ideproc_t() performs CPU-polled transfers to/from a drive.
- * Arguments are: the drive, the buffer pointer, and the length (in bytes or
- * words depending on if it's an IDE or ATAPI call).
- *
- * If it is not defined for a controller, standard-code is used from ide.c.
- *
- * Controllers which are not memory-mapped in the standard way need to 
- * override that mechanism using this function to work.
- *
- */
-typedef enum { ideproc_ide_input_data,    ideproc_ide_output_data,
-              ideproc_atapi_input_bytes, ideproc_atapi_output_bytes
-} ide_ide_action_t;
-
-typedef void (ide_ideproc_t)(ide_ide_action_t, ide_drive_t *, void *, unsigned int);
-
-/*
- * An ide_tuneproc_t() is used to set the speed of an IDE interface
- * to a particular PIO mode.  The "byte" parameter is used
- * to select the PIO mode by number (0,1,2,3,4,5), and a value of 255
- * indicates that the interface driver should "auto-tune" the PIO mode
- * according to the drive capabilities in drive->id;
- *
- * Not all interface types support tuning, and not all of those
- * support all possible PIO settings.  They may silently ignore
- * or round values as they see fit.
- */
-typedef void (ide_tuneproc_t) (ide_drive_t *, byte);
-typedef int (ide_speedproc_t) (ide_drive_t *, byte);
-
-/*
- * This is used to provide support for strange interfaces
- */
-typedef void (ide_selectproc_t) (ide_drive_t *);
-typedef void (ide_resetproc_t) (ide_drive_t *);
-typedef int (ide_quirkproc_t) (ide_drive_t *);
-typedef void (ide_intrproc_t) (ide_drive_t *);
-typedef void (ide_maskproc_t) (ide_drive_t *, int);
-typedef void (ide_rw_proc_t) (ide_drive_t *, ide_dma_action_t);
-
-/*
- * ide soft-power support
- */
-typedef int (ide_busproc_t) (ide_drive_t *, int);
-
-#define IDE_CHIPSET_PCI_MASK   \
-    ((1<<ide_pci)|(1<<ide_cmd646)|(1<<ide_ali14xx))
-#define IDE_CHIPSET_IS_PCI(c)  ((IDE_CHIPSET_PCI_MASK >> (c)) & 1)
-
-#ifdef CONFIG_BLK_DEV_IDEPCI
-typedef struct ide_pci_devid_s {
-       unsigned short  vid;
-       unsigned short  did;
-} ide_pci_devid_t;
-
-#define IDE_PCI_DEVID_NULL     ((ide_pci_devid_t){0,0})
-#define IDE_PCI_DEVID_EQ(a,b)  (a.vid == b.vid && a.did == b.did)
-#endif /* CONFIG_BLK_DEV_IDEPCI */
-
-typedef struct hwif_s {
-       struct hwif_s   *next;          /* for linked-list in ide_hwgroup_t */
-       void            *hwgroup;       /* actually (ide_hwgroup_t *) */
-       ide_ioreg_t     io_ports[IDE_NR_PORTS]; /* task file registers */
-       hw_regs_t       hw;             /* Hardware info */
-       ide_drive_t     drives[MAX_DRIVES];     /* drive info */
-       struct gendisk  *gd;            /* gendisk structure */
-       ide_tuneproc_t  *tuneproc;      /* routine to tune PIO mode for drives */
-       ide_speedproc_t *speedproc;     /* routine to retune DMA modes for drives */
-       ide_selectproc_t *selectproc;   /* tweaks hardware to select drive */
-       ide_resetproc_t *resetproc;     /* routine to reset controller after a disk reset */
-       ide_intrproc_t  *intrproc;      /* special interrupt handling for shared pci interrupts */
-       ide_maskproc_t  *maskproc;      /* special host masking for drive selection */
-       ide_quirkproc_t *quirkproc;     /* check host's drive quirk list */
-       ide_rw_proc_t   *rwproc;        /* adjust timing based upon rq->cmd direction */
-       ide_ideproc_t   *ideproc;       /* CPU-polled transfer routine */
-       ide_dmaproc_t   *dmaproc;       /* dma read/write/abort routine */
-       unsigned int    *dmatable_cpu;  /* dma physical region descriptor table (cpu view) */
-       dma_addr_t      dmatable_dma;   /* dma physical region descriptor table (dma view) */
-       struct scatterlist *sg_table;   /* Scatter-gather list used to build the above */
-       int sg_nents;                   /* Current number of entries in it */
-       int sg_dma_direction;           /* dma transfer direction */
-       int sg_dma_active;              /* is it in use */
-       struct hwif_s   *mate;          /* other hwif from same PCI chip */
-       unsigned long   dma_base;       /* base addr for dma ports */
-       unsigned        dma_extra;      /* extra addr for dma ports */
-       unsigned long   config_data;    /* for use by chipset-specific code */
-       unsigned long   select_data;    /* for use by chipset-specific code */
-       struct proc_dir_entry *proc;    /* /proc/ide/ directory entry */
-       int             irq;            /* our irq number */
-       byte            major;          /* our major number */
-       char            name[6];        /* name of interface, eg. "ide0" */
-       byte            index;          /* 0 for ide0; 1 for ide1; ... */
-       hwif_chipset_t  chipset;        /* sub-module for tuning.. */
-       unsigned        noprobe    : 1; /* don't probe for this interface */
-       unsigned        present    : 1; /* this interface exists */
-       unsigned        serialized : 1; /* serialized operation with mate hwif */
-       unsigned        sharing_irq: 1; /* 1 = sharing irq with another hwif */
-       unsigned        reset      : 1; /* reset after probe */
-       unsigned        autodma    : 1; /* automatically try to enable DMA at boot */
-       unsigned        udma_four  : 1; /* 1=ATA-66 capable, 0=default */
-       byte            channel;        /* for dual-port chips: 0=primary, 1=secondary */
-#ifdef CONFIG_BLK_DEV_IDEPCI
-       struct pci_dev  *pci_dev;       /* for pci chipsets */
-       ide_pci_devid_t pci_devid;      /* for pci chipsets: {VID,DID} */
-#endif /* CONFIG_BLK_DEV_IDEPCI */
-#if (DISK_RECOVERY_TIME > 0)
-       unsigned long   last_time;      /* time when previous rq was done */
-#endif
-       byte            straight8;      /* Alan's straight 8 check */
-       void            *hwif_data;     /* extra hwif data */
-       ide_busproc_t   *busproc;       /* driver soft-power interface */
-       byte            bus_state;      /* power state of the IDE bus */
-} ide_hwif_t;
-
-/*
- * Status returned from various ide_ functions
- */
-typedef enum {
-       ide_stopped,    /* no drive operation was started */
-       ide_started     /* a drive operation was started, and a handler was set */
-} ide_startstop_t;
-
-/*
- *  internal ide interrupt handler type
- */
-typedef ide_startstop_t (ide_pre_handler_t)(ide_drive_t *, struct request *);
-typedef ide_startstop_t (ide_handler_t)(ide_drive_t *);
-typedef ide_startstop_t (ide_post_handler_t)(ide_drive_t *);
-
-/*
- * when ide_timer_expiry fires, invoke a handler of this type
- * to decide what to do.
- */
-typedef int (ide_expiry_t)(ide_drive_t *);
-
-typedef struct hwgroup_s {
-       ide_handler_t           *handler;/* irq handler, if active */
-       volatile int            busy;   /* BOOL: protects all fields below */
-       int                     sleeping; /* BOOL: wake us up on timer expiry */
-       ide_drive_t             *drive; /* current drive */
-       ide_hwif_t              *hwif;  /* ptr to current hwif in linked-list */
-       struct request          *rq;    /* current request */
-       struct timer_list       timer;  /* failsafe timer */
-       struct request          wrq;    /* local copy of current write rq */
-       unsigned long           poll_timeout;   /* timeout value during long polls */
-       ide_expiry_t            *expiry;        /* queried upon timeouts */
-} ide_hwgroup_t;
-
-/* structure attached to the request for IDE_TASK_CMDS */
-
-/*
- * configurable drive settings
- */
-
-#define TYPE_INT       0
-#define TYPE_INTA      1
-#define TYPE_BYTE      2
-#define TYPE_SHORT     3
-
-#define SETTING_READ   (1 << 0)
-#define SETTING_WRITE  (1 << 1)
-#define SETTING_RW     (SETTING_READ | SETTING_WRITE)
-
-typedef int (ide_procset_t)(ide_drive_t *, int);
-typedef struct ide_settings_s {
-       char                    *name;
-       int                     rw;
-       int                     read_ioctl;
-       int                     write_ioctl;
-       int                     data_type;
-       int                     min;
-       int                     max;
-       int                     mul_factor;
-       int                     div_factor;
-       void                    *data;
-       ide_procset_t           *set;
-       int                     auto_remove;
-       struct ide_settings_s   *next;
-} ide_settings_t;
-
-void ide_add_setting(ide_drive_t *drive, const char *name, int rw, int read_ioctl, int write_ioctl, int data_type, int min, int max, int mul_factor, int div_factor, void *data, ide_procset_t *set);
-void ide_remove_setting(ide_drive_t *drive, char *name);
-ide_settings_t *ide_find_setting_by_name(ide_drive_t *drive, char *name);
-int ide_read_setting(ide_drive_t *t, ide_settings_t *setting);
-int ide_write_setting(ide_drive_t *drive, ide_settings_t *setting, int val);
-void ide_add_generic_settings(ide_drive_t *drive);
-
-#if 0
-/*
- * /proc/ide interface
- */
-typedef struct {
-       const char      *name;
-       mode_t          mode;
-       read_proc_t     *read_proc;
-       write_proc_t    *write_proc;
-} ide_proc_entry_t;
-#endif
-
-#ifdef CONFIG_PROC_FS
-void proc_ide_create(void);
-void proc_ide_destroy(void);
-void recreate_proc_ide_device(ide_hwif_t *, ide_drive_t *);
-void destroy_proc_ide_device(ide_hwif_t *, ide_drive_t *);
-void destroy_proc_ide_drives(ide_hwif_t *);
-void create_proc_ide_interfaces(void);
-void ide_add_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t *p, void *data);
-void ide_remove_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t *p);
-read_proc_t proc_ide_read_capacity;
-read_proc_t proc_ide_read_geometry;
-
-/*
- * Standard exit stuff:
- */
-#define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) \
-{                                      \
-       len -= off;                     \
-       if (len < count) {              \
-               *eof = 1;               \
-               if (len <= 0)           \
-                       return 0;       \
-       } else                          \
-               len = count;            \
-       *start = page + off;            \
-       return len;                     \
-}
-#else
-#define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) return 0;
-#endif
-
-/*
- * Subdrivers support.
- */
-#define IDE_SUBDRIVER_VERSION  1
-
-typedef int            (ide_cleanup_proc)(ide_drive_t *);
-typedef int            (ide_standby_proc)(ide_drive_t *);
-typedef int            (ide_flushcache_proc)(ide_drive_t *);
-typedef ide_startstop_t        (ide_do_request_proc)(ide_drive_t *, struct request *, unsigned long);
-typedef void           (ide_end_request_proc)(byte, ide_hwgroup_t *);
-typedef int            (ide_ioctl_proc)(ide_drive_t *, struct inode *, struct file *, unsigned int, unsigned long);
-typedef int            (ide_open_proc)(struct inode *, struct file *, ide_drive_t *);
-typedef void           (ide_release_proc)(struct inode *, struct file *, ide_drive_t *);
-typedef int            (ide_check_media_change_proc)(ide_drive_t *);
-typedef void           (ide_revalidate_proc)(ide_drive_t *);
-typedef void           (ide_pre_reset_proc)(ide_drive_t *);
-typedef unsigned long  (ide_capacity_proc)(ide_drive_t *);
-typedef ide_startstop_t        (ide_special_proc)(ide_drive_t *);
-typedef void           (ide_setting_proc)(ide_drive_t *);
-typedef int            (ide_reinit_proc)(ide_drive_t *);
-typedef void           (ata_prebuilder_proc)(ide_drive_t *);
-typedef void           (atapi_prebuilder_proc)(ide_drive_t *);
-
-typedef struct ide_driver_s {
-       const char                      *name;
-       const char                      *version;
-       byte                            media;
-       unsigned busy                   : 1;
-       unsigned supports_dma           : 1;
-       unsigned supports_dsc_overlap   : 1;
-       ide_cleanup_proc                *cleanup;
-       ide_standby_proc                *standby;
-       ide_flushcache_proc             *flushcache;
-       ide_do_request_proc             *do_request;
-       ide_end_request_proc            *end_request;
-       ide_ioctl_proc                  *ioctl;
-       ide_open_proc                   *open;
-       ide_release_proc                *release;
-       ide_check_media_change_proc     *media_change;
-       ide_revalidate_proc             *revalidate;
-       ide_pre_reset_proc              *pre_reset;
-       ide_capacity_proc               *capacity;
-       ide_special_proc                *special;
-    /*ide_proc_entry_t         *proc;*/
-       ide_reinit_proc                 *reinit;
-       ata_prebuilder_proc             *ata_prebuilder;
-       atapi_prebuilder_proc           *atapi_prebuilder;
-} ide_driver_t;
-
-#define DRIVER(drive)          ((ide_driver_t *)((drive)->driver))
-
-/*
- * IDE modules.
- */
-#define IDE_CHIPSET_MODULE             0       /* not supported yet */
-#define IDE_PROBE_MODULE               1
-#define IDE_DRIVER_MODULE              2
-
-typedef int    (ide_module_init_proc)(void);
-
-typedef struct ide_module_s {
-       int                             type;
-       ide_module_init_proc            *init;
-       void                            *info;
-       struct ide_module_s             *next;
-} ide_module_t;
-
-/*
- * ide_hwifs[] is the master data structure used to keep track
- * of just about everything in ide.c.  Whenever possible, routines
- * should be using pointers to a drive (ide_drive_t *) or
- * pointers to a hwif (ide_hwif_t *), rather than indexing this
- * structure directly (the allocation/layout may change!).
- *
- */
-#ifndef _IDE_C
-extern ide_hwif_t      ide_hwifs[];            /* master data repository */
-extern ide_module_t    *ide_modules;
-extern ide_module_t    *ide_probe;
-#endif
-extern int noautodma;
-
-/*
- * We need blk.h, but we replace its end_request by our own version.
- */
-#define IDE_DRIVER             /* Toggle some magic bits in blk.h */
-#define LOCAL_END_REQUEST      /* Don't generate end_request in blk.h */
-#include <xeno/blk.h>
-
-void ide_end_request(byte uptodate, ide_hwgroup_t *hwgroup);
-
-/*
- * This is used for (nearly) all data transfers from/to the IDE interface
- * FIXME for 2.5, to a pointer pass verses memcpy........
- */
-void ide_input_data (ide_drive_t *drive, void *buffer, unsigned int wcount);
-void ide_output_data (ide_drive_t *drive, void *buffer, unsigned int wcount);
-
-/*
- * This is used for (nearly) all ATAPI data transfers from/to the IDE interface
- * FIXME for 2.5, to a pointer pass verses memcpy........
- */
-void atapi_input_bytes (ide_drive_t *drive, void *buffer, unsigned int bytecount);
-void atapi_output_bytes (ide_drive_t *drive, void *buffer, unsigned int bytecount);
-
-int drive_is_ready (ide_drive_t *drive);
-
-/*
- * This is used on exit from the driver, to designate the next irq handler
- * and also to start the safety timer.
- */
-void ide_set_handler (ide_drive_t *drive, ide_handler_t *handler, unsigned int timeout, ide_expiry_t *expiry);
-
-/*
- * Error reporting, in human readable form (luxurious, but a memory hog).
- */
-byte ide_dump_status (ide_drive_t *drive, const char *msg, byte stat);
-
-/*
- * ide_error() takes action based on the error returned by the controller.
- * The caller should return immediately after invoking this.
- */
-ide_startstop_t ide_error (ide_drive_t *drive, const char *msg, byte stat);
-
-/*
- * Issue a simple drive command
- * The drive must be selected beforehand.
- */
-void ide_cmd (ide_drive_t *drive, byte cmd, byte nsect, ide_handler_t *handler);
-
-/*
- * ide_fixstring() cleans up and (optionally) byte-swaps a text string,
- * removing leading/trailing blanks and compressing internal blanks.
- * It is primarily used to tidy up the model name/number fields as
- * returned by the WIN_[P]IDENTIFY commands.
- */
-void ide_fixstring (byte *s, const int bytecount, const int byteswap);
-
-/*
- * This routine busy-waits for the drive status to be not "busy".
- * It then checks the status for all of the "good" bits and none
- * of the "bad" bits, and if all is okay it returns 0.  All other
- * cases return 1 after doing "*startstop = ide_error()", and the
- * caller should return the updated value of "startstop" in this case.
- * "startstop" is unchanged when the function returns 0;
- */
-int ide_wait_stat (ide_startstop_t *startstop, ide_drive_t *drive, byte good, byte bad, unsigned long timeout);
-
-int ide_wait_noerr (ide_drive_t *drive, byte good, byte bad, unsigned long timeout);
-
-/*
- * This routine is called from the partition-table code in genhd.c
- * to "convert" a drive to a logical geometry with fewer than 1024 cyls.
- */
-int ide_xlate_1024 (kdev_t, int, int, const char *);
-
-/*
- * Convert kdev_t structure into ide_drive_t * one.
- */
-ide_drive_t *get_info_ptr (kdev_t i_rdev);
-
-/*
- * Return the current idea about the total capacity of this drive.
- */
-unsigned long current_capacity (ide_drive_t *drive);
-
-/*
- * Start a reset operation for an IDE interface.
- * The caller should return immediately after invoking this.
- */
-ide_startstop_t ide_do_reset (ide_drive_t *);
-
-/*
- * Re-Start an operation for an IDE interface.
- * The caller should return immediately after invoking this.
- */
-ide_startstop_t restart_request (ide_drive_t *);
-
-/*
- * This function is intended to be used prior to invoking ide_do_drive_cmd().
- */
-void ide_init_drive_cmd (struct request *rq);
-
-/*
- * "action" parameter type for ide_do_drive_cmd() below.
- */
-typedef enum {
-       ide_wait,       /* insert rq at end of list, and wait for it */
-       ide_next,       /* insert rq immediately after current request */
-       ide_preempt,    /* insert rq in front of current request */
-       ide_end         /* insert rq at end of list, but don't wait for it */
-} ide_action_t;
-
-/*
- * This function issues a special IDE device request
- * onto the request queue.
- *
- * If action is ide_wait, then the rq is queued at the end of the
- * request queue, and the function sleeps until it has been processed.
- * This is for use when invoked from an ioctl handler.
- *
- * If action is ide_preempt, then the rq is queued at the head of
- * the request queue, displacing the currently-being-processed
- * request and this function returns immediately without waiting
- * for the new rq to be completed.  This is VERY DANGEROUS, and is
- * intended for careful use by the ATAPI tape/cdrom driver code.
- *
- * If action is ide_next, then the rq is queued immediately after
- * the currently-being-processed-request (if any), and the function
- * returns without waiting for the new rq to be completed.  As above,
- * This is VERY DANGEROUS, and is intended for careful use by the
- * ATAPI tape/cdrom driver code.
- *
- * If action is ide_end, then the rq is queued at the end of the
- * request queue, and the function returns immediately without waiting
- * for the new rq to be completed. This is again intended for careful
- * use by the ATAPI tape/cdrom driver code.
- */
-int ide_do_drive_cmd (ide_drive_t *drive, struct request *rq, ide_action_t action);
-
-/*
- * Clean up after success/failure of an explicit drive cmd.
- * stat/err are used only when (HWGROUP(drive)->rq->cmd == IDE_DRIVE_CMD).
- * stat/err are used only when (HWGROUP(drive)->rq->cmd == IDE_DRIVE_TASK_MASK).
- */
-void ide_end_drive_cmd (ide_drive_t *drive, byte stat, byte err);
-
-/*
- * Issue ATA command and wait for completion. use for implementing commands in kernel
- */
-int ide_wait_cmd (ide_drive_t *drive, int cmd, int nsect, int feature, int sectors, byte *buf);
-
-int ide_wait_cmd_task (ide_drive_t *drive, byte *buf);
-typedef struct ide_task_s {
-       task_ioreg_t            tfRegister[8];
-       task_ioreg_t            hobRegister[8];
-       ide_reg_valid_t         tf_out_flags;
-       ide_reg_valid_t         tf_in_flags;
-       int                     data_phase;
-       int                     command_type;
-       ide_pre_handler_t       *prehandler;
-       ide_handler_t           *handler;
-       ide_post_handler_t      *posthandler;
-       void                    *special;       /* valid_t generally */
-       struct request          *rq;            /* copy of request */
-       unsigned long           block;          /* copy of block */
-} ide_task_t;
-
-typedef struct pkt_task_s {
-       task_ioreg_t            tfRegister[8];
-       int                     data_phase;
-       int                     command_type;
-       ide_handler_t           *handler;
-       void                    *special;
-       struct request          *rq;            /* copy of request */
-       unsigned long           block;          /* copy of block */
-} pkt_task_t;
-
-/*
- * taskfile io for disks for now...
- */
-ide_startstop_t do_rw_taskfile (ide_drive_t *drive, ide_task_t *task);
-
-/*
- * Builds request from ide_ioctl
- */
-void do_taskfile (ide_drive_t *drive, struct hd_drive_task_hdr *taskfile, struct hd_drive_hob_hdr *hobfile, ide_handler_t *handler);
-
-/*
- * Special Flagged Register Validation Caller
- */
-// ide_startstop_t flagged_taskfile (ide_drive_t *drive, ide_task_t *task);
-
-ide_startstop_t set_multmode_intr (ide_drive_t *drive);
-ide_startstop_t set_geometry_intr (ide_drive_t *drive);
-ide_startstop_t recal_intr (ide_drive_t *drive);
-ide_startstop_t task_no_data_intr (ide_drive_t *drive);
-ide_startstop_t task_in_intr (ide_drive_t *drive);
-ide_startstop_t task_mulin_intr (ide_drive_t *drive);
-ide_startstop_t pre_task_out_intr (ide_drive_t *drive, struct request *rq);
-ide_startstop_t task_out_intr (ide_drive_t *drive);
-ide_startstop_t task_mulout_intr (ide_drive_t *drive);
-void ide_init_drive_taskfile (struct request *rq);
-
-int ide_wait_taskfile (ide_drive_t *drive, struct hd_drive_task_hdr *taskfile, struct hd_drive_hob_hdr *hobfile, byte *buf);
-
-int ide_raw_taskfile (ide_drive_t *drive, ide_task_t *cmd, byte *buf);
-
-ide_pre_handler_t * ide_pre_handler_parser (struct hd_drive_task_hdr *taskfile, struct hd_drive_hob_hdr *hobfile);
-ide_handler_t * ide_handler_parser (struct hd_drive_task_hdr *taskfile, struct hd_drive_hob_hdr *hobfile);
-/* Expects args is a full set of TF registers and parses the command type */
-int ide_cmd_type_parser (ide_task_t *args);
-
-int ide_taskfile_ioctl (ide_drive_t *drive, struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);
-
-#ifdef CONFIG_PKT_TASK_IOCTL
-int pkt_taskfile_ioctl (ide_drive_t *drive, struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);
-#endif /* CONFIG_PKT_TASK_IOCTL */
-
-void ide_delay_50ms (void);
-int system_bus_clock(void);
-
-byte ide_auto_reduce_xfer (ide_drive_t *drive);
-int ide_driveid_update (ide_drive_t *drive);
-int ide_ata66_check (ide_drive_t *drive, ide_task_t *args);
-int ide_config_drive_speed (ide_drive_t *drive, byte speed);
-byte eighty_ninty_three (ide_drive_t *drive);
-int set_transfer (ide_drive_t *drive, ide_task_t *args);
-
-/*
- * ide_system_bus_speed() returns what we think is the system VESA/PCI
- * bus speed (in MHz).  This is used for calculating interface PIO timings.
- * The default is 40 for known PCI systems, 50 otherwise.
- * The "idebus=xx" parameter can be used to override this value.
- */
-int ide_system_bus_speed (void);
-
-/*
- * ide_multwrite() transfers a block of up to mcount sectors of data
- * to a drive as part of a disk multwrite operation.
- */
-int ide_multwrite (ide_drive_t *drive, unsigned int mcount);
-
-/*
- * ide_stall_queue() can be used by a drive to give excess bandwidth back
- * to the hwgroup by sleeping for timeout jiffies.
- */
-void ide_stall_queue (ide_drive_t *drive, unsigned long timeout);
-
-/*
- * ide_get_queue() returns the queue which corresponds to a given device.
- */
-request_queue_t *ide_get_queue (kdev_t dev);
-
-/*
- * CompactFlash cards and their brethern pretend to be removable hard disks,
- * but they never have a slave unit, and they don't have doorlock mechanisms.
- * This test catches them, and is invoked elsewhere when setting appropriate config bits.
- */
-int drive_is_flashcard (ide_drive_t *drive);
-
-int ide_spin_wait_hwgroup (ide_drive_t *drive);
-void ide_timer_expiry (unsigned long data);
-void ide_intr (int irq, void *dev_id, struct pt_regs *regs);
-void do_ide_request (request_queue_t * q);
-void ide_init_subdrivers (void);
-
-#ifndef _IDE_C
-extern struct block_device_operations ide_fops[];
-/*extern ide_proc_entry_t generic_subdriver_entries[];*/
-#endif
-
-int ide_reinit_drive (ide_drive_t *drive);
-
-#ifdef _IDE_C
-#ifdef CONFIG_BLK_DEV_IDE
-int ideprobe_init (void);
-#endif /* CONFIG_BLK_DEV_IDE */
-#ifdef CONFIG_BLK_DEV_IDEDISK
-int idedisk_reinit (ide_drive_t *drive);
-int idedisk_init (void);
-#endif /* CONFIG_BLK_DEV_IDEDISK */
-#ifdef CONFIG_BLK_DEV_IDECD
-int ide_cdrom_reinit (ide_drive_t *drive);
-int ide_cdrom_init (void);
-#endif /* CONFIG_BLK_DEV_IDECD */
-#ifdef CONFIG_BLK_DEV_IDETAPE
-int idetape_reinit (ide_drive_t *drive);
-int idetape_init (void);
-#endif /* CONFIG_BLK_DEV_IDETAPE */
-#ifdef CONFIG_BLK_DEV_IDEFLOPPY
-int idefloppy_reinit (ide_drive_t *drive);
-int idefloppy_init (void);
-#endif /* CONFIG_BLK_DEV_IDEFLOPPY */
-#ifdef CONFIG_BLK_DEV_IDESCSI
-int idescsi_reinit (ide_drive_t *drive);
-int idescsi_init (void);
-#endif /* CONFIG_BLK_DEV_IDESCSI */
-#endif /* _IDE_C */
-
-int ide_register_module (ide_module_t *module);
-void ide_unregister_module (ide_module_t *module);
-ide_drive_t *ide_scan_devices (byte media, const char *name, ide_driver_t *driver, int n);
-int ide_register_subdriver (ide_drive_t *drive, ide_driver_t *driver, int version);
-int ide_unregister_subdriver (ide_drive_t *drive);
-int ide_replace_subdriver(ide_drive_t *drive, const char *driver);
-
-#ifdef CONFIG_BLK_DEV_IDEPCI
-#define ON_BOARD               1
-#define NEVER_BOARD            0
-#ifdef CONFIG_BLK_DEV_OFFBOARD
-#  define OFF_BOARD            ON_BOARD
-#else /* CONFIG_BLK_DEV_OFFBOARD */
-#  define OFF_BOARD            NEVER_BOARD
-#endif /* CONFIG_BLK_DEV_OFFBOARD */
-
-unsigned long ide_find_free_region (unsigned short size) __init;
-void ide_scan_pcibus (int scan_direction) __init;
-#endif
-#ifdef CONFIG_BLK_DEV_IDEDMA
-#define BAD_DMA_DRIVE          0
-#define GOOD_DMA_DRIVE         1
-int ide_build_dmatable (ide_drive_t *drive, ide_dma_action_t func);
-void ide_destroy_dmatable (ide_drive_t *drive);
-ide_startstop_t ide_dma_intr (ide_drive_t *drive);
-int check_drive_lists (ide_drive_t *drive, int good_bad);
-int report_drive_dmaing (ide_drive_t *drive);
-int ide_dmaproc (ide_dma_action_t func, ide_drive_t *drive);
-int ide_release_dma (ide_hwif_t *hwif);
-void ide_setup_dma (ide_hwif_t *hwif, unsigned long dmabase, unsigned int num_ports) __init;
-unsigned long ide_get_or_set_dma_base (ide_hwif_t *hwif, int extra, const char *name) __init;
-#endif
-
-void hwif_unregister (ide_hwif_t *hwif);
-
-void export_ide_init_queue (ide_drive_t *drive);
-byte export_probe_for_drive (ide_drive_t *drive);
-
-#endif /* _IDE_H */
diff --git a/xen/include/xeno/if.h b/xen/include/xeno/if.h
deleted file mode 100644 (file)
index f7908a3..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Global definitions for the INET interface module.
- *
- * Version:    @(#)if.h        1.0.2   04/18/93
- *
- * Authors:    Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988
- *             Ross Biro, <bir7@leland.Stanford.Edu>
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_IF_H
-#define _LINUX_IF_H
-
-#include <xeno/types.h>                /* for "__kernel_caddr_t" et al */
-#include <xeno/socket.h>               /* for "struct sockaddr" et al  */
-
-/* Standard interface flags (netdevice->flags). */
-#define        IFF_UP          0x1             /* interface is up              */
-#define        IFF_BROADCAST   0x2             /* broadcast address valid      */
-#define        IFF_DEBUG       0x4             /* turn on debugging            */
-#define        IFF_LOOPBACK    0x8             /* is a loopback net            */
-#define        IFF_POINTOPOINT 0x10            /* interface is has p-p link    */
-#define        IFF_NOTRAILERS  0x20            /* avoid use of trailers        */
-#define        IFF_RUNNING     0x40            /* resources allocated          */
-#define        IFF_NOARP       0x80            /* no ARP protocol              */
-#define        IFF_PROMISC     0x100           /* receive all packets          */
-#define        IFF_ALLMULTI    0x200           /* receive all multicast packets*/
-
-#define IFF_MASTER     0x400           /* master of a load balancer    */
-#define IFF_SLAVE      0x800           /* slave of a load balancer     */
-
-#define IFF_MULTICAST  0x1000          /* Supports multicast           */
-
-#define IFF_VOLATILE   (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_MASTER|IFF_SLAVE|IFF_RUNNING)
-
-#define IFF_PORTSEL    0x2000          /* can set media type           */
-#define IFF_AUTOMEDIA  0x4000          /* auto media select active     */
-#define IFF_DYNAMIC    0x8000          /* dialup device with changing addresses*/
-
-/* Private (from user) interface flags (netdevice->priv_flags). */
-#define IFF_802_1Q_VLAN 0x1             /* 802.1Q VLAN device.          */
-
-/*
- *     Device mapping structure. I'd just gone off and designed a 
- *     beautiful scheme using only loadable modules with arguments
- *     for driver options and along come the PCMCIA people 8)
- *
- *     Ah well. The get() side of this is good for WDSETUP, and it'll
- *     be handy for debugging things. The set side is fine for now and
- *     being very small might be worth keeping for clean configuration.
- */
-
-struct ifmap 
-{
-       unsigned long mem_start;
-       unsigned long mem_end;
-       unsigned short base_addr; 
-       unsigned char irq;
-       unsigned char dma;
-       unsigned char port;
-       /* 3 bytes spare */
-};
-
-/*`
- * Interface request structure used for socket
- * ioctl's.  All interface ioctl's must have parameter
- * definitions which begin with ifr_name.  The
- * remainder may be interface specific.
- */
-
-struct ifreq 
-{
-#define IFHWADDRLEN    6
-#define        IFNAMSIZ        16
-       union
-       {
-               char    ifrn_name[IFNAMSIZ];            /* if name, e.g. "en0" */
-       } ifr_ifrn;
-       
-       union {
-               struct  sockaddr ifru_addr;
-               struct  sockaddr ifru_dstaddr;
-               struct  sockaddr ifru_broadaddr;
-               struct  sockaddr ifru_netmask;
-               struct  sockaddr ifru_hwaddr;
-               short   ifru_flags;
-               int     ifru_ivalue;
-               int     ifru_mtu;
-               struct  ifmap ifru_map;
-               char    ifru_slave[IFNAMSIZ];   /* Just fits the size */
-               char    ifru_newname[IFNAMSIZ];
-               char *  ifru_data;
-       } ifr_ifru;
-};
-
-#define ifr_name       ifr_ifrn.ifrn_name      /* interface name       */
-#define ifr_hwaddr     ifr_ifru.ifru_hwaddr    /* MAC address          */
-#define        ifr_addr        ifr_ifru.ifru_addr      /* address              */
-#define        ifr_dstaddr     ifr_ifru.ifru_dstaddr   /* other end of p-p lnk */
-#define        ifr_broadaddr   ifr_ifru.ifru_broadaddr /* broadcast address    */
-#define        ifr_netmask     ifr_ifru.ifru_netmask   /* interface net mask   */
-#define        ifr_flags       ifr_ifru.ifru_flags     /* flags                */
-#define        ifr_metric      ifr_ifru.ifru_ivalue    /* metric               */
-#define        ifr_mtu         ifr_ifru.ifru_mtu       /* mtu                  */
-#define ifr_map                ifr_ifru.ifru_map       /* device map           */
-#define ifr_slave      ifr_ifru.ifru_slave     /* slave device         */
-#define        ifr_data        ifr_ifru.ifru_data      /* for use by interface */
-#define ifr_ifindex    ifr_ifru.ifru_ivalue    /* interface index      */
-#define ifr_bandwidth  ifr_ifru.ifru_ivalue    /* link bandwidth       */
-#define ifr_qlen       ifr_ifru.ifru_ivalue    /* Queue length         */
-#define ifr_newname    ifr_ifru.ifru_newname   /* New name             */
-
-/*
- * Structure used in SIOCGIFCONF request.
- * Used to retrieve interface configuration
- * for machine (useful for programs which
- * must know all networks accessible).
- */
-
-struct ifconf 
-{
-       int     ifc_len;                        /* size of buffer       */
-       union 
-       {
-               char *                  ifcu_buf;
-               struct  ifreq           *ifcu_req;
-       } ifc_ifcu;
-};
-#define        ifc_buf ifc_ifcu.ifcu_buf               /* buffer address       */
-#define        ifc_req ifc_ifcu.ifcu_req               /* array of structures  */
-
-
-#endif /* _LINUX_IF_H */
diff --git a/xen/include/xeno/if_ether.h b/xen/include/xeno/if_ether.h
deleted file mode 100644 (file)
index b64559d..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Global definitions for the Ethernet IEEE 802.3 interface.
- *
- * Version:    @(#)if_ether.h  1.0.1a  02/08/94
- *
- * Author:     Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *             Donald Becker, <becker@super.org>
- *             Alan Cox, <alan@redhat.com>
- *             Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_IF_ETHER_H
-#define _LINUX_IF_ETHER_H
-
-/*
- *     IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
- *     and FCS/CRC (frame check sequence). 
- */
-
-#define ETH_ALEN       6               /* Octets in one ethernet addr   */
-#define ETH_HLEN       14              /* Total octets in header.       */
-#define ETH_ZLEN       60              /* Min. octets in frame sans FCS */
-#define ETH_DATA_LEN   1500            /* Max. octets in payload        */
-#define ETH_FRAME_LEN  1514            /* Max. octets in frame sans FCS */
-
-/*
- *     These are the defined Ethernet Protocol ID's.
- */
-
-#define ETH_P_LOOP     0x0060          /* Ethernet Loopback packet     */
-#define ETH_P_PUP      0x0200          /* Xerox PUP packet             */
-#define ETH_P_PUPAT    0x0201          /* Xerox PUP Addr Trans packet  */
-#define ETH_P_IP       0x0800          /* Internet Protocol packet     */
-#define ETH_P_X25      0x0805          /* CCITT X.25                   */
-#define ETH_P_ARP      0x0806          /* Address Resolution packet    */
-#define        ETH_P_BPQ       0x08FF          /* G8BPQ AX.25 Ethernet Packet  [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_IEEEPUP  0x0a00          /* Xerox IEEE802.3 PUP packet */
-#define ETH_P_IEEEPUPAT        0x0a01          /* Xerox IEEE802.3 PUP Addr Trans packet */
-#define ETH_P_DEC       0x6000          /* DEC Assigned proto           */
-#define ETH_P_DNA_DL    0x6001          /* DEC DNA Dump/Load            */
-#define ETH_P_DNA_RC    0x6002          /* DEC DNA Remote Console       */
-#define ETH_P_DNA_RT    0x6003          /* DEC DNA Routing              */
-#define ETH_P_LAT       0x6004          /* DEC LAT                      */
-#define ETH_P_DIAG      0x6005          /* DEC Diagnostics              */
-#define ETH_P_CUST      0x6006          /* DEC Customer use             */
-#define ETH_P_SCA       0x6007          /* DEC Systems Comms Arch       */
-#define ETH_P_RARP      0x8035         /* Reverse Addr Res packet      */
-#define ETH_P_ATALK    0x809B          /* Appletalk DDP                */
-#define ETH_P_AARP     0x80F3          /* Appletalk AARP               */
-#define ETH_P_8021Q    0x8100          /* 802.1Q VLAN Extended Header  */
-#define ETH_P_IPX      0x8137          /* IPX over DIX                 */
-#define ETH_P_IPV6     0x86DD          /* IPv6 over bluebook           */
-#define ETH_P_PPP_DISC 0x8863          /* PPPoE discovery messages     */
-#define ETH_P_PPP_SES  0x8864          /* PPPoE session messages       */
-#define ETH_P_ATMMPOA  0x884c          /* MultiProtocol Over ATM       */
-#define ETH_P_ATMFATE  0x8884          /* Frame-based ATM Transport
-                                        * over Ethernet
-                                        */
-
-/*
- *     Non DIX types. Won't clash for 1500 types.
- */
-#define ETH_P_802_3    0x0001          /* Dummy type for 802.3 frames  */
-#define ETH_P_AX25     0x0002          /* Dummy protocol id for AX.25  */
-#define ETH_P_ALL      0x0003          /* Every packet (be careful!!!) */
-#define ETH_P_802_2    0x0004          /* 802.2 frames                 */
-#define ETH_P_SNAP     0x0005          /* Internal only                */
-#define ETH_P_DDCMP     0x0006          /* DEC DDCMP: Internal only     */
-#define ETH_P_WAN_PPP   0x0007          /* Dummy type for WAN PPP frames*/
-#define ETH_P_PPP_MP    0x0008          /* Dummy type for PPP MP frames */
-#define ETH_P_LOCALTALK 0x0009         /* Localtalk pseudo type        */
-#define ETH_P_PPPTALK  0x0010          /* Dummy type for Atalk over PPP*/
-#define ETH_P_TR_802_2 0x0011          /* 802.2 frames                 */
-#define ETH_P_MOBITEX  0x0015          /* Mobitex (kaz@cafe.net)       */
-#define ETH_P_CONTROL  0x0016          /* Card specific control frames */
-#define ETH_P_IRDA     0x0017          /* Linux-IrDA                   */
-#define ETH_P_ECONET   0x0018          /* Acorn Econet                 */
-
-/*
- *     This is an Ethernet frame header.
- */
-struct ethhdr 
-{
-       unsigned char   h_dest[ETH_ALEN];       /* destination eth addr */
-       unsigned char   h_source[ETH_ALEN];     /* source ether addr    */
-       unsigned short  h_proto;                /* packet type ID field */
-};
-
-#endif /* _LINUX_IF_ETHER_H */
diff --git a/xen/include/xeno/if_packet.h b/xen/include/xeno/if_packet.h
deleted file mode 100644 (file)
index b925585..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#ifndef __LINUX_IF_PACKET_H
-#define __LINUX_IF_PACKET_H
-
-struct sockaddr_pkt
-{
-       unsigned short spkt_family;
-       unsigned char spkt_device[14];
-       unsigned short spkt_protocol;
-};
-
-struct sockaddr_ll
-{
-       unsigned short  sll_family;
-       unsigned short  sll_protocol;
-       int             sll_ifindex;
-       unsigned short  sll_hatype;
-       unsigned char   sll_pkttype;
-       unsigned char   sll_halen;
-       unsigned char   sll_addr[8];
-};
-
-/* Packet types */
-
-#define PACKET_HOST            0               /* To us                */
-#define PACKET_BROADCAST       1               /* To all               */
-#define PACKET_MULTICAST       2               /* To group             */
-#define PACKET_OTHERHOST       3               /* To someone else      */
-#define PACKET_OUTGOING                4               /* Outgoing of any type */
-/* These ones are invisible by user level */
-#define PACKET_LOOPBACK                5               /* MC/BRD frame looped back */
-#define PACKET_FASTROUTE       6               /* Fastrouted frame     */
-
-/* Packet socket options */
-
-#define PACKET_ADD_MEMBERSHIP          1
-#define PACKET_DROP_MEMBERSHIP         2
-#define PACKET_RECV_OUTPUT             3
-/* Value 4 is still used by obsolete turbo-packet. */
-#define PACKET_RX_RING                 5
-#define PACKET_STATISTICS              6
-#define PACKET_COPY_THRESH             7
-
-struct tpacket_stats
-{
-       unsigned int    tp_packets;
-       unsigned int    tp_drops;
-};
-
-struct tpacket_hdr
-{
-       unsigned long   tp_status;
-#define TP_STATUS_KERNEL       0
-#define TP_STATUS_USER         1
-#define TP_STATUS_COPY         2
-#define TP_STATUS_LOSING       4
-#define TP_STATUS_CSUMNOTREADY 8
-       unsigned int    tp_len;
-       unsigned int    tp_snaplen;
-       unsigned short  tp_mac;
-       unsigned short  tp_net;
-       unsigned int    tp_sec;
-       unsigned int    tp_usec;
-};
-
-#define TPACKET_ALIGNMENT      16
-#define TPACKET_ALIGN(x)       (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
-#define TPACKET_HDRLEN         (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
-
-/*
-   Frame structure:
-
-   - Start. Frame must be aligned to TPACKET_ALIGNMENT=16
-   - struct tpacket_hdr
-   - pad to TPACKET_ALIGNMENT=16
-   - struct sockaddr_ll
-   - Gap, chosen so that packet data (Start+tp_net) alignes to TPACKET_ALIGNMENT=16
-   - Start+tp_mac: [ Optional MAC header ]
-   - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16.
-   - Pad to align to TPACKET_ALIGNMENT=16
- */
-
-struct tpacket_req
-{
-       unsigned int    tp_block_size;  /* Minimal size of contiguous block */
-       unsigned int    tp_block_nr;    /* Number of blocks */
-       unsigned int    tp_frame_size;  /* Size of frame */
-       unsigned int    tp_frame_nr;    /* Total number of frames */
-};
-
-struct packet_mreq
-{
-       int             mr_ifindex;
-       unsigned short  mr_type;
-       unsigned short  mr_alen;
-       unsigned char   mr_address[8];
-};
-
-#define PACKET_MR_MULTICAST    0
-#define PACKET_MR_PROMISC      1
-#define PACKET_MR_ALLMULTI     2
-
-#endif
diff --git a/xen/include/xeno/if_vlan.h b/xen/include/xeno/if_vlan.h
deleted file mode 100644 (file)
index 9ffc014..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * VLAN                An implementation of 802.1Q VLAN tagging.
- *
- * Authors:    Ben Greear <greearb@candelatech.com>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- *
- */
-
-#ifndef _LINUX_IF_VLAN_H_
-#define _LINUX_IF_VLAN_H_
-
-#ifdef __KERNEL__
-
-/* externally defined structs */
-struct vlan_group;
-struct net_device;
-struct sk_buff;
-struct packet_type;
-struct vlan_collection;
-struct vlan_dev_info;
-
-//#include <xeno/proc_fs.h> /* for proc_dir_entry */
-#include <xeno/netdevice.h>
-
-#define VLAN_HLEN      4               /* The additional bytes (on top of the Ethernet header)
-                                        * that VLAN requires.
-                                        */
-#define VLAN_ETH_ALEN  6               /* Octets in one ethernet addr   */
-#define VLAN_ETH_HLEN  18              /* Total octets in header.       */
-#define VLAN_ETH_ZLEN  64              /* Min. octets in frame sans FCS */
-
-/*
- * According to 802.3ac, the packet can be 4 bytes longer. --Klika Jan
- */
-#define VLAN_ETH_DATA_LEN      1500    /* Max. octets in payload        */
-#define VLAN_ETH_FRAME_LEN     1518    /* Max. octets in frame sans FCS */
-
-struct vlan_ethhdr {
-   unsigned char       h_dest[ETH_ALEN];          /* destination eth addr      */
-   unsigned char       h_source[ETH_ALEN];        /* source ether addr */
-   unsigned short       h_vlan_proto;              /* Should always be 0x8100 */
-   unsigned short       h_vlan_TCI;                /* Encapsulates priority and VLAN ID */
-   unsigned short      h_vlan_encapsulated_proto; /* packet type ID field (or len) */
-};
-
-struct vlan_hdr {
-   unsigned short       h_vlan_TCI;                /* Encapsulates priority and VLAN ID */
-   unsigned short       h_vlan_encapsulated_proto; /* packet type ID field (or len) */
-};
-
-#define VLAN_VID_MASK  0xfff
-
-/* found in af_inet.c */
-extern int (*vlan_ioctl_hook)(unsigned long arg);
-
-#define VLAN_NAME "vlan"
-
-/* if this changes, algorithm will have to be reworked because this
- * depends on completely exhausting the VLAN identifier space.  Thus
- * it gives constant time look-up, but in many cases it wastes memory.
- */
-#define VLAN_GROUP_ARRAY_LEN 4096
-
-struct vlan_group {
-       int real_dev_ifindex; /* The ifindex of the ethernet(like) device the vlan is attached to. */
-       struct net_device *vlan_devices[VLAN_GROUP_ARRAY_LEN];
-
-       struct vlan_group *next; /* the next in the list */
-};
-
-struct vlan_priority_tci_mapping {
-       unsigned long priority;
-       unsigned short vlan_qos; /* This should be shifted when first set, so we only do it
-                                 * at provisioning time.
-                                 * ((skb->priority << 13) & 0xE000)
-                                 */
-       struct vlan_priority_tci_mapping *next;
-};
-
-/* Holds information that makes sense if this device is a VLAN device. */
-struct vlan_dev_info {
-       /** This will be the mapping that correlates skb->priority to
-        * 3 bits of VLAN QOS tags...
-        */
-       unsigned long ingress_priority_map[8];
-       struct vlan_priority_tci_mapping *egress_priority_map[16]; /* hash table */
-
-       unsigned short vlan_id;        /*  The VLAN Identifier for this interface. */
-       unsigned short flags;          /* (1 << 0) re_order_header   This option will cause the
-                                        *   VLAN code to move around the ethernet header on
-                                        *   ingress to make the skb look **exactly** like it
-                                        *   came in from an ethernet port.  This destroys some of
-                                        *   the VLAN information in the skb, but it fixes programs
-                                        *   like DHCP that use packet-filtering and don't understand
-                                        *   802.1Q
-                                        */
-       struct dev_mc_list *old_mc_list;  /* old multi-cast list for the VLAN interface..
-                                           * we save this so we can tell what changes were
-                                           * made, in order to feed the right changes down
-                                           * to the real hardware...
-                                           */
-       int old_allmulti;               /* similar to above. */
-       int old_promiscuity;            /* similar to above. */
-       struct net_device *real_dev;    /* the underlying device/interface */
-       struct proc_dir_entry *dent;    /* Holds the proc data */
-       unsigned long cnt_inc_headroom_on_tx; /* How many times did we have to grow the skb on TX. */
-       unsigned long cnt_encap_on_xmit;      /* How many times did we have to encapsulate the skb on TX. */
-       struct net_device_stats dev_stats; /* Device stats (rx-bytes, tx-pkts, etc...) */
-};
-
-#define VLAN_DEV_INFO(x) ((struct vlan_dev_info *)(x->priv))
-
-/* inline functions */
-
-static inline struct net_device_stats *vlan_dev_get_stats(struct net_device *dev)
-{
-       return &(VLAN_DEV_INFO(dev)->dev_stats);
-}
-
-static inline __u32 vlan_get_ingress_priority(struct net_device *dev,
-                                             unsigned short vlan_tag)
-{
-       struct vlan_dev_info *vip = VLAN_DEV_INFO(dev);
-
-       return vip->ingress_priority_map[(vlan_tag >> 13) & 0x7];
-}
-
-/* VLAN tx hw acceleration helpers. */
-struct vlan_skb_tx_cookie {
-       u32     magic;
-       u32     vlan_tag;
-};
-
-#if 0
-#define VLAN_TX_COOKIE_MAGIC   0x564c414e      /* "VLAN" in ascii. */
-#define VLAN_TX_SKB_CB(__skb)  ((struct vlan_skb_tx_cookie *)&((__skb)->cb[0]))
-#define vlan_tx_tag_present(__skb) \
-       (VLAN_TX_SKB_CB(__skb)->magic == VLAN_TX_COOKIE_MAGIC)
-#define vlan_tx_tag_get(__skb) (VLAN_TX_SKB_CB(__skb)->vlan_tag)
-#else /* XXX KAF: We don't support vlan tagging at the moment. */
-#define VLAN_TX_SKB_CB(__skb)     NULL
-#define vlan_tx_tag_present(__skb) 0
-#define vlan_tx_tag_get(__skb)    0
-#endif
-
-#if 0
-/* VLAN rx hw acceleration helper.  This acts like netif_{rx,receive_skb}(). */
-static inline int __vlan_hwaccel_rx(struct sk_buff *skb,
-                                   struct vlan_group *grp,
-                                   unsigned short vlan_tag, int polling)
-{
-       struct net_device_stats *stats;
-
-       skb->dev = grp->vlan_devices[vlan_tag & VLAN_VID_MASK];
-       if (skb->dev == NULL) {
-               kfree_skb(skb);
-
-               /* Not NET_RX_DROP, this is not being dropped
-                * due to congestion.
-                */
-               return 0;
-       }
-
-       skb->dev->last_rx = jiffies;
-
-       stats = vlan_dev_get_stats(skb->dev);
-       stats->rx_packets++;
-       stats->rx_bytes += skb->len;
-
-       skb->priority = vlan_get_ingress_priority(skb->dev, vlan_tag);
-       switch (skb->pkt_type) {
-       case PACKET_BROADCAST:
-               break;
-
-       case PACKET_MULTICAST:
-               stats->multicast++;
-               break;
-
-       case PACKET_OTHERHOST:
-               /* Our lower layer thinks this is not local, let's make sure.
-                * This allows the VLAN to have a different MAC than the underlying
-                * device, and still route correctly.
-                */
-               if (!memcmp(skb->mac.ethernet->h_dest, skb->dev->dev_addr, ETH_ALEN))
-                       skb->pkt_type = PACKET_HOST;
-               break;
-       };
-
-#ifdef NAPI
-       return (polling ? netif_receive_skb(skb) : netif_rx(skb));
-#else
-        return netif_rx(skb);
-#endif
-}
-
-static inline int vlan_hwaccel_rx(struct sk_buff *skb,
-                                 struct vlan_group *grp,
-                                 unsigned short vlan_tag)
-{
-       return __vlan_hwaccel_rx(skb, grp, vlan_tag, 0);
-}
-
-static inline int vlan_hwaccel_receive_skb(struct sk_buff *skb,
-                                          struct vlan_group *grp,
-                                          unsigned short vlan_tag)
-{
-       return __vlan_hwaccel_rx(skb, grp, vlan_tag, 1);
-}
-#else
-#define vlan_hwaccel_rx(_skb, _grp, _tag) (netif_rx(_skb))
-#endif
-#endif /* __KERNEL__ */
-
-/* VLAN IOCTLs are found in sockios.h */
-
-/* Passed in vlan_ioctl_args structure to determine behaviour. */
-enum vlan_ioctl_cmds {
-       ADD_VLAN_CMD,
-       DEL_VLAN_CMD,
-       SET_VLAN_INGRESS_PRIORITY_CMD,
-       SET_VLAN_EGRESS_PRIORITY_CMD,
-       GET_VLAN_INGRESS_PRIORITY_CMD,
-       GET_VLAN_EGRESS_PRIORITY_CMD,
-       SET_VLAN_NAME_TYPE_CMD,
-       SET_VLAN_FLAG_CMD
-};
-
-enum vlan_name_types {
-       VLAN_NAME_TYPE_PLUS_VID, /* Name will look like:  vlan0005 */
-       VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like:  eth1.0005 */
-       VLAN_NAME_TYPE_PLUS_VID_NO_PAD, /* Name will look like:  vlan5 */
-       VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD, /* Name will look like:  eth0.5 */
-       VLAN_NAME_TYPE_HIGHEST
-};
-
-struct vlan_ioctl_args {
-       int cmd; /* Should be one of the vlan_ioctl_cmds enum above. */
-       char device1[24];
-
-        union {
-               char device2[24];
-               int VID;
-               unsigned int skb_priority;
-               unsigned int name_type;
-               unsigned int bind_type;
-               unsigned int flag; /* Matches vlan_dev_info flags */
-        } u;
-
-       short vlan_qos;   
-};
-
-#endif /* !(_LINUX_IF_VLAN_H_) */
diff --git a/xen/include/xeno/in.h b/xen/include/xeno/in.h
deleted file mode 100644 (file)
index 6c090e6..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions of the Internet Protocol.
- *
- * Version:    @(#)in.h        1.0.1   04/21/93
- *
- * Authors:    Original taken from the GNU Project <netinet/in.h> file.
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_IN_H
-#define _LINUX_IN_H
-
-#include <xeno/types.h>
-#include <xeno/socket.h>
-
-/* Standard well-defined IP protocols.  */
-enum {
-  IPPROTO_IP = 0,              /* Dummy protocol for TCP               */
-  IPPROTO_ICMP = 1,            /* Internet Control Message Protocol    */
-  IPPROTO_IGMP = 2,            /* Internet Group Management Protocol   */
-  IPPROTO_IPIP = 4,            /* IPIP tunnels (older KA9Q tunnels use 94) */
-  IPPROTO_TCP = 6,             /* Transmission Control Protocol        */
-  IPPROTO_EGP = 8,             /* Exterior Gateway Protocol            */
-  IPPROTO_PUP = 12,            /* PUP protocol                         */
-  IPPROTO_UDP = 17,            /* User Datagram Protocol               */
-  IPPROTO_IDP = 22,            /* XNS IDP protocol                     */
-  IPPROTO_RSVP = 46,           /* RSVP protocol                        */
-  IPPROTO_GRE = 47,            /* Cisco GRE tunnels (rfc 1701,1702)    */
-
-  IPPROTO_IPV6  = 41,          /* IPv6-in-IPv4 tunnelling              */
-
-  IPPROTO_PIM    = 103,                /* Protocol Independent Multicast       */
-
-  IPPROTO_ESP = 50,            /* Encapsulation Security Payload protocol */
-  IPPROTO_AH = 51,             /* Authentication Header protocol       */
-  IPPROTO_COMP   = 108,                /* Compression Header protocol */
-
-  IPPROTO_RAW   = 255,         /* Raw IP packets                       */
-  IPPROTO_MAX
-};
-
-
-/* Internet address. */
-struct in_addr {
-       __u32   s_addr;
-};
-
-#define IP_TOS         1
-#define IP_TTL         2
-#define IP_HDRINCL     3
-#define IP_OPTIONS     4
-#define IP_ROUTER_ALERT        5
-#define IP_RECVOPTS    6
-#define IP_RETOPTS     7
-#define IP_PKTINFO     8
-#define IP_PKTOPTIONS  9
-#define IP_MTU_DISCOVER        10
-#define IP_RECVERR     11
-#define IP_RECVTTL     12
-#define        IP_RECVTOS      13
-#define IP_MTU         14
-#define IP_FREEBIND    15
-
-/* BSD compatibility */
-#define IP_RECVRETOPTS IP_RETOPTS
-
-/* IP_MTU_DISCOVER values */
-#define IP_PMTUDISC_DONT               0       /* Never send DF frames */
-#define IP_PMTUDISC_WANT               1       /* Use per route hints  */
-#define IP_PMTUDISC_DO                 2       /* Always DF            */
-
-#define IP_MULTICAST_IF                        32
-#define IP_MULTICAST_TTL               33
-#define IP_MULTICAST_LOOP              34
-#define IP_ADD_MEMBERSHIP              35
-#define IP_DROP_MEMBERSHIP             36
-
-/* These need to appear somewhere around here */
-#define IP_DEFAULT_MULTICAST_TTL        1
-#define IP_DEFAULT_MULTICAST_LOOP       1
-
-/* Request struct for multicast socket ops */
-
-struct ip_mreq 
-{
-       struct in_addr imr_multiaddr;   /* IP multicast address of group */
-       struct in_addr imr_interface;   /* local IP address of interface */
-};
-
-struct ip_mreqn
-{
-       struct in_addr  imr_multiaddr;          /* IP multicast address of group */
-       struct in_addr  imr_address;            /* local IP address of interface */
-       int             imr_ifindex;            /* Interface index */
-};
-
-struct in_pktinfo
-{
-       int             ipi_ifindex;
-       struct in_addr  ipi_spec_dst;
-       struct in_addr  ipi_addr;
-};
-
-/* Structure describing an Internet (IP) socket address. */
-#define __SOCK_SIZE__  16              /* sizeof(struct sockaddr)      */
-struct sockaddr_in {
-  sa_family_t          sin_family;     /* Address family               */
-  unsigned short int   sin_port;       /* Port number                  */
-  struct in_addr       sin_addr;       /* Internet address             */
-
-  /* Pad to size of `struct sockaddr'. */
-  unsigned char                __pad[__SOCK_SIZE__ - sizeof(short int) -
-                       sizeof(unsigned short int) - sizeof(struct in_addr)];
-};
-#define sin_zero       __pad           /* for BSD UNIX comp. -FvK      */
-
-
-/*
- * Definitions of the bits in an Internet address integer.
- * On subnets, host and network parts are found according
- * to the subnet mask, not these masks.
- */
-#define        IN_CLASSA(a)            ((((long int) (a)) & 0x80000000) == 0)
-#define        IN_CLASSA_NET           0xff000000
-#define        IN_CLASSA_NSHIFT        24
-#define        IN_CLASSA_HOST          (0xffffffff & ~IN_CLASSA_NET)
-#define        IN_CLASSA_MAX           128
-
-#define        IN_CLASSB(a)            ((((long int) (a)) & 0xc0000000) == 0x80000000)
-#define        IN_CLASSB_NET           0xffff0000
-#define        IN_CLASSB_NSHIFT        16
-#define        IN_CLASSB_HOST          (0xffffffff & ~IN_CLASSB_NET)
-#define        IN_CLASSB_MAX           65536
-
-#define        IN_CLASSC(a)            ((((long int) (a)) & 0xe0000000) == 0xc0000000)
-#define        IN_CLASSC_NET           0xffffff00
-#define        IN_CLASSC_NSHIFT        8
-#define        IN_CLASSC_HOST          (0xffffffff & ~IN_CLASSC_NET)
-
-#define        IN_CLASSD(a)            ((((long int) (a)) & 0xf0000000) == 0xe0000000)
-#define        IN_MULTICAST(a)         IN_CLASSD(a)
-#define IN_MULTICAST_NET       0xF0000000
-
-#define        IN_EXPERIMENTAL(a)      ((((long int) (a)) & 0xf0000000) == 0xf0000000)
-#define        IN_BADCLASS(a)          IN_EXPERIMENTAL((a))
-
-/* Address to accept any incoming messages. */
-#define        INADDR_ANY              ((unsigned long int) 0x00000000)
-
-/* Address to send to all hosts. */
-#define        INADDR_BROADCAST        ((unsigned long int) 0xffffffff)
-
-/* Address indicating an error return. */
-#define        INADDR_NONE             ((unsigned long int) 0xffffffff)
-
-/* Network number for local host loopback. */
-#define        IN_LOOPBACKNET          127
-
-/* Address to loopback in software to local host.  */
-#define        INADDR_LOOPBACK         0x7f000001      /* 127.0.0.1   */
-#define        IN_LOOPBACK(a)          ((((long int) (a)) & 0xff000000) == 0x7f000000)
-
-/* Defines for Multicast INADDR */
-#define INADDR_UNSPEC_GROUP    0xe0000000U     /* 224.0.0.0   */
-#define INADDR_ALLHOSTS_GROUP  0xe0000001U     /* 224.0.0.1   */
-#define INADDR_ALLRTRS_GROUP    0xe0000002U    /* 224.0.0.2 */
-#define INADDR_MAX_LOCAL_GROUP  0xe00000ffU    /* 224.0.0.255 */
-
-
-/* <asm/byteorder.h> contains the htonl type stuff.. */
-#include <asm/byteorder.h> 
-
-#ifdef __KERNEL__
-/* Some random defines to make it easier in the kernel.. */
-#define LOOPBACK(x)    (((x) & htonl(0xff000000)) == htonl(0x7f000000))
-#define MULTICAST(x)   (((x) & htonl(0xf0000000)) == htonl(0xe0000000))
-#define BADCLASS(x)    (((x) & htonl(0xf0000000)) == htonl(0xf0000000))
-#define ZERONET(x)     (((x) & htonl(0xff000000)) == htonl(0x00000000))
-#define LOCAL_MCAST(x) (((x) & htonl(0xFFFFFF00)) == htonl(0xE0000000))
-
-#endif
-
-#endif /* _LINUX_IN_H */
diff --git a/xen/include/xeno/init.h b/xen/include/xeno/init.h
deleted file mode 100644 (file)
index 554fe7f..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-#ifndef _LINUX_INIT_H
-#define _LINUX_INIT_H
-
-#include <xeno/config.h>
-
-/* These macros are used to mark some functions or 
- * initialized data (doesn't apply to uninitialized data)
- * as `initialization' functions. The kernel can take this
- * as hint that the function is used only during the initialization
- * phase and free up used memory resources after
- *
- * Usage:
- * For functions:
- * 
- * You should add __init immediately before the function name, like:
- *
- * static void __init initme(int x, int y)
- * {
- *    extern int z; z = x * y;
- * }
- *
- * If the function has a prototype somewhere, you can also add
- * __init between closing brace of the prototype and semicolon:
- *
- * extern int initialize_foobar_device(int, int, int) __init;
- *
- * For initialized data:
- * You should insert __initdata between the variable name and equal
- * sign followed by value, e.g.:
- *
- * static int init_variable __initdata = 0;
- * static char linux_logo[] __initdata = { 0x32, 0x36, ... };
- *
- * Don't forget to initialize data not at file scope, i.e. within a function,
- * as gcc otherwise puts the data into the bss section and not into the init
- * section.
- * 
- * Also note, that this data cannot be "const".
- */
-
-#ifndef MODULE
-
-#ifndef __ASSEMBLY__
-
-/*
- * Used for initialization calls..
- */
-typedef int (*initcall_t)(void);
-typedef void (*exitcall_t)(void);
-
-extern initcall_t __initcall_start, __initcall_end;
-
-#define __initcall(fn)                                                         \
-       static initcall_t __initcall_##fn __init_call = fn
-#define __exitcall(fn)                                                         \
-       static exitcall_t __exitcall_##fn __exit_call = fn
-
-/*
- * Used for kernel command line parameter setup
- */
-struct kernel_param {
-       const char *str;
-       int (*setup_func)(char *);
-};
-
-extern struct kernel_param __setup_start, __setup_end;
-
-#define __setup(str, fn)                                                               \
-       static char __setup_str_##fn[] __initdata = str;                                \
-       static struct kernel_param __setup_##fn __attribute__((unused)) __initsetup = { __setup_str_##fn, fn }
-
-#endif /* __ASSEMBLY__ */
-
-/*
- * Mark functions and data as being only used at initialization
- * or exit time.
- */
-#define __init         __attribute__ ((__section__ (".text.init")))
-#define __exit         __attribute__ ((unused, __section__(".text.exit")))
-#define __initdata     __attribute__ ((__section__ (".data.init")))
-#define __exitdata     __attribute__ ((unused, __section__ (".data.exit")))
-#define __initsetup    __attribute__ ((unused,__section__ (".setup.init")))
-#define __init_call    __attribute__ ((unused,__section__ (".initcall.init")))
-#define __exit_call    __attribute__ ((unused,__section__ (".exitcall.exit")))
-
-/* For assembly routines */
-#define __INIT         .section        ".text.init","ax"
-#define __FINIT                .previous
-#define __INITDATA     .section        ".data.init","aw"
-
-/**
- * module_init() - driver initialization entry point
- * @x: function to be run at kernel boot time or module insertion
- * 
- * module_init() will add the driver initialization routine in
- * the "__initcall.int" code segment if the driver is checked as
- * "y" or static, or else it will wrap the driver initialization
- * routine with init_module() which is used by insmod and
- * modprobe when the driver is used as a module.
- */
-#define module_init(x) __initcall(x);
-
-/**
- * module_exit() - driver exit entry point
- * @x: function to be run when driver is removed
- * 
- * module_exit() will wrap the driver clean-up code
- * with cleanup_module() when used with rmmod when
- * the driver is a module.  If the driver is statically
- * compiled into the kernel, module_exit() has no effect.
- */
-#define module_exit(x) __exitcall(x);
-
-#else
-
-#define __init
-#define __exit
-#define __initdata
-#define __exitdata
-#define __initcall(fn)
-/* For assembly routines */
-#define __INIT
-#define __FINIT
-#define __INITDATA
-
-/* These macros create a dummy inline: gcc 2.9x does not count alias
- as usage, hence the `unused function' warning when __init functions
- are declared static. We use the dummy __*_module_inline functions
- both to kill the warning and check the type of the init/cleanup
- function. */
-typedef int (*__init_module_func_t)(void);
-typedef void (*__cleanup_module_func_t)(void);
-#define module_init(x) \
-       int init_module(void) __attribute__((alias(#x))); \
-       static inline __init_module_func_t __init_module_inline(void) \
-       { return x; }
-#define module_exit(x) \
-       void cleanup_module(void) __attribute__((alias(#x))); \
-       static inline __cleanup_module_func_t __cleanup_module_inline(void) \
-       { return x; }
-
-#define __setup(str,func) /* nothing */
-
-#endif
-
-#ifdef CONFIG_HOTPLUG
-#define __devinit
-#define __devinitdata
-#define __devexit
-#define __devexitdata
-#else
-#define __devinit __init
-#define __devinitdata __initdata
-#define __devexit __exit
-#define __devexitdata __exitdata
-#endif
-
-/* Functions marked as __devexit may be discarded at kernel link time, depending
-   on config options.  Newer versions of binutils detect references from
-   retained sections to discarded sections and flag an error.  Pointers to
-   __devexit functions must use __devexit_p(function_name), the wrapper will
-   insert either the function_name or NULL, depending on the config options.
- */
-#if defined(MODULE) || defined(CONFIG_HOTPLUG)
-#define __devexit_p(x) x
-#else
-#define __devexit_p(x) NULL
-#endif
-
-#endif /* _LINUX_INIT_H */
diff --git a/xen/include/xeno/interrupt.h b/xen/include/xeno/interrupt.h
deleted file mode 100644 (file)
index b044705..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/* interrupt.h */
-#ifndef _LINUX_INTERRUPT_H
-#define _LINUX_INTERRUPT_H
-
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/smp.h>
-#include <xeno/cache.h>
-
-#include <asm/bitops.h>
-#include <asm/atomic.h>
-#include <asm/ptrace.h>
-
-/* For 2.6.x compatibility */
-typedef void irqreturn_t;
-#define IRQ_NONE
-#define IRQ_HANDLED
-#define IRQ_RETVAL(x)
-                                                                                
-struct irqaction {
-       void (*handler)(int, void *, struct pt_regs *);
-       unsigned long flags;
-       unsigned long mask;
-       const char *name;
-       void *dev_id;
-       struct irqaction *next;
-};
-
-
-enum {
-       TIMER_BH = 0,
-       SCSI_BH
-};
-
-#include <asm/hardirq.h>
-#include <asm/softirq.h>
-
-
-enum
-{
-       HI_SOFTIRQ=0,
-       NET_RX_SOFTIRQ,
-       AC_TIMER_SOFTIRQ,
-       TASKLET_SOFTIRQ,
-        BLKDEV_RESPONSE_SOFTIRQ,
-        NET_TX_SOFTIRQ
-};
-
-/* softirq mask and active fields moved to irq_cpustat_t in
- * asm/hardirq.h to get better cache usage.  KAO
- */
-
-struct softirq_action
-{
-       void    (*action)(struct softirq_action *);
-       void    *data;
-};
-
-asmlinkage void do_softirq(void);
-extern void open_softirq(int nr, void (*action)(struct softirq_action*), void *data);
-extern void softirq_init(void);
-#define __cpu_raise_softirq(cpu, nr) set_bit(nr, &softirq_pending(cpu))
-extern void FASTCALL(cpu_raise_softirq(unsigned int cpu, unsigned int nr));
-extern void FASTCALL(raise_softirq(unsigned int nr));
-
-
-
-/* Tasklets --- multithreaded analogue of BHs.
-
-   Main feature differing them of generic softirqs: tasklet
-   is running only on one CPU simultaneously.
-
-   Main feature differing them of BHs: different tasklets
-   may be run simultaneously on different CPUs.
-
-   Properties:
-   * If tasklet_schedule() is called, then tasklet is guaranteed
-     to be executed on some cpu at least once after this.
-   * If the tasklet is already scheduled, but its excecution is still not
-     started, it will be executed only once.
-   * If this tasklet is already running on another CPU (or schedule is called
-     from tasklet itself), it is rescheduled for later.
-   * Tasklet is strictly serialized wrt itself, but not
-     wrt another tasklets. If client needs some intertask synchronization,
-     he makes it with spinlocks.
- */
-
-struct tasklet_struct
-{
-       struct tasklet_struct *next;
-       unsigned long state;
-       atomic_t count;
-       void (*func)(unsigned long);
-       unsigned long data;
-};
-
-#define DECLARE_TASKLET(name, func, data) \
-struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }
-
-#define DECLARE_TASKLET_DISABLED(name, func, data) \
-struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data }
-
-
-enum
-{
-       TASKLET_STATE_SCHED,    /* Tasklet is scheduled for execution */
-       TASKLET_STATE_RUN       /* Tasklet is running (SMP only) */
-};
-
-struct tasklet_head
-{
-       struct tasklet_struct *list;
-} __attribute__ ((__aligned__(SMP_CACHE_BYTES)));
-
-extern struct tasklet_head tasklet_vec[NR_CPUS];
-extern struct tasklet_head tasklet_hi_vec[NR_CPUS];
-
-#ifdef CONFIG_SMP
-static inline int tasklet_trylock(struct tasklet_struct *t)
-{
-       return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state);
-}
-
-static inline void tasklet_unlock(struct tasklet_struct *t)
-{
-       smp_mb__before_clear_bit(); 
-       clear_bit(TASKLET_STATE_RUN, &(t)->state);
-}
-
-static inline void tasklet_unlock_wait(struct tasklet_struct *t)
-{
-       while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { barrier(); }
-}
-#else
-#define tasklet_trylock(t) 1
-#define tasklet_unlock_wait(t) do { } while (0)
-#define tasklet_unlock(t) do { } while (0)
-#endif
-
-extern void FASTCALL(__tasklet_schedule(struct tasklet_struct *t));
-
-static inline void tasklet_schedule(struct tasklet_struct *t)
-{
-       if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
-               __tasklet_schedule(t);
-}
-
-extern void FASTCALL(__tasklet_hi_schedule(struct tasklet_struct *t));
-
-static inline void tasklet_hi_schedule(struct tasklet_struct *t)
-{
-       if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
-               __tasklet_hi_schedule(t);
-}
-
-
-static inline void tasklet_disable_nosync(struct tasklet_struct *t)
-{
-       atomic_inc(&t->count);
-       smp_mb__after_atomic_inc();
-}
-
-static inline void tasklet_disable(struct tasklet_struct *t)
-{
-       tasklet_disable_nosync(t);
-       tasklet_unlock_wait(t);
-       smp_mb();
-}
-
-static inline void tasklet_enable(struct tasklet_struct *t)
-{
-       smp_mb__before_atomic_dec();
-       if (atomic_dec_and_test(&t->count) &&
-           test_bit(TASKLET_STATE_SCHED, &t->state))
-               __tasklet_schedule(t);
-}
-
-static inline void tasklet_hi_enable(struct tasklet_struct *t)
-{
-       smp_mb__before_atomic_dec();
-       if (atomic_dec_and_test(&t->count) &&
-           test_bit(TASKLET_STATE_SCHED, &t->state))
-               __tasklet_hi_schedule(t);
-}
-
-extern void tasklet_kill(struct tasklet_struct *t);
-extern void tasklet_init(struct tasklet_struct *t,
-                        void (*func)(unsigned long), unsigned long data);
-
-#ifdef CONFIG_SMP
-
-#define SMP_TIMER_NAME(name) name##__thr
-
-#define SMP_TIMER_DEFINE(name, task) \
-DECLARE_TASKLET(task, name##__thr, 0); \
-static void name (unsigned long dummy) \
-{ \
-       tasklet_schedule(&(task)); \
-}
-
-#else /* CONFIG_SMP */
-
-#define SMP_TIMER_NAME(name) name
-#define SMP_TIMER_DEFINE(name, task)
-
-#endif /* CONFIG_SMP */
-
-
-/* Old BH definitions */
-
-extern struct tasklet_struct bh_task_vec[];
-
-/* It is exported _ONLY_ for wait_on_irq(). */
-extern spinlock_t global_bh_lock;
-
-static inline void mark_bh(int nr)
-{
-       tasklet_hi_schedule(bh_task_vec+nr);
-}
-
-extern void init_bh(int nr, void (*routine)(void));
-extern void remove_bh(int nr);
-
-
-/*
- * Autoprobing for irqs:
- *
- * probe_irq_on() and probe_irq_off() provide robust primitives
- * for accurate IRQ probing during kernel initialization.  They are
- * reasonably simple to use, are not "fooled" by spurious interrupts,
- * and, unlike other attempts at IRQ probing, they do not get hung on
- * stuck interrupts (such as unused PS2 mouse interfaces on ASUS boards).
- *
- * For reasonably foolproof probing, use them as follows:
- *
- * 1. clear and/or mask the device's internal interrupt.
- * 2. sti();
- * 3. irqs = probe_irq_on();      // "take over" all unassigned idle IRQs
- * 4. enable the device and cause it to trigger an interrupt.
- * 5. wait for the device to interrupt, using non-intrusive polling or a delay.
- * 6. irq = probe_irq_off(irqs);  // get IRQ number, 0=none, negative=multiple
- * 7. service the device to clear its pending interrupt.
- * 8. loop again if paranoia is required.
- *
- * probe_irq_on() returns a mask of allocated irq's.
- *
- * probe_irq_off() takes the mask as a parameter,
- * and returns the irq number which occurred,
- * or zero if none occurred, or a negative irq number
- * if more than one irq occurred.
- */
-extern unsigned long probe_irq_on(void);       /* returns 0 on failure */
-extern int probe_irq_off(unsigned long);       /* returns 0 or negative on failure */
-extern unsigned int probe_irq_mask(unsigned long);     /* returns mask of ISA interrupts */
-
-#endif
diff --git a/xen/include/xeno/ioctl.h b/xen/include/xeno/ioctl.h
deleted file mode 100644 (file)
index aa91eb3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _LINUX_IOCTL_H
-#define _LINUX_IOCTL_H
-
-#include <asm/ioctl.h>
-
-#endif /* _LINUX_IOCTL_H */
-
diff --git a/xen/include/xeno/ioport.h b/xen/include/xeno/ioport.h
deleted file mode 100644 (file)
index 0416edc..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * ioport.h    Definitions of routines for detecting, reserving and
- *             allocating system resources.
- *
- * Authors:    Linus Torvalds
- */
-
-#ifndef _LINUX_IOPORT_H
-#define _LINUX_IOPORT_H
-
-/*
- * Resources are tree-like, allowing
- * nesting etc..
- */
-struct resource {
-       const char *name;
-       unsigned long start, end;
-       unsigned long flags;
-       struct resource *parent, *sibling, *child;
-};
-
-struct resource_list {
-       struct resource_list *next;
-       struct resource *res;
-       struct pci_dev *dev;
-};
-
-/*
- * IO resources have these defined flags.
- */
-#define IORESOURCE_BITS                0x000000ff      /* Bus-specific bits */
-
-#define IORESOURCE_IO          0x00000100      /* Resource type */
-#define IORESOURCE_MEM         0x00000200
-#define IORESOURCE_IRQ         0x00000400
-#define IORESOURCE_DMA         0x00000800
-
-#define IORESOURCE_PREFETCH    0x00001000      /* No side effects */
-#define IORESOURCE_READONLY    0x00002000
-#define IORESOURCE_CACHEABLE   0x00004000
-#define IORESOURCE_RANGELENGTH 0x00008000
-#define IORESOURCE_SHADOWABLE  0x00010000
-#define IORESOURCE_BUS_HAS_VGA 0x00080000
-
-#define IORESOURCE_UNSET       0x20000000
-#define IORESOURCE_AUTO                0x40000000
-#define IORESOURCE_BUSY                0x80000000      /* Driver has marked this resource busy */
-
-/* ISA PnP IRQ specific bits (IORESOURCE_BITS) */
-#define IORESOURCE_IRQ_HIGHEDGE                (1<<0)
-#define IORESOURCE_IRQ_LOWEDGE         (1<<1)
-#define IORESOURCE_IRQ_HIGHLEVEL       (1<<2)
-#define IORESOURCE_IRQ_LOWLEVEL                (1<<3)
-
-/* ISA PnP DMA specific bits (IORESOURCE_BITS) */
-#define IORESOURCE_DMA_TYPE_MASK       (3<<0)
-#define IORESOURCE_DMA_8BIT            (0<<0)
-#define IORESOURCE_DMA_8AND16BIT       (1<<0)
-#define IORESOURCE_DMA_16BIT           (2<<0)
-
-#define IORESOURCE_DMA_MASTER          (1<<2)
-#define IORESOURCE_DMA_BYTE            (1<<3)
-#define IORESOURCE_DMA_WORD            (1<<4)
-
-#define IORESOURCE_DMA_SPEED_MASK      (3<<6)
-#define IORESOURCE_DMA_COMPATIBLE      (0<<6)
-#define IORESOURCE_DMA_TYPEA           (1<<6)
-#define IORESOURCE_DMA_TYPEB           (2<<6)
-#define IORESOURCE_DMA_TYPEF           (3<<6)
-
-/* ISA PnP memory I/O specific bits (IORESOURCE_BITS) */
-#define IORESOURCE_MEM_WRITEABLE       (1<<0)  /* dup: IORESOURCE_READONLY */
-#define IORESOURCE_MEM_CACHEABLE       (1<<1)  /* dup: IORESOURCE_CACHEABLE */
-#define IORESOURCE_MEM_RANGELENGTH     (1<<2)  /* dup: IORESOURCE_RANGELENGTH */
-#define IORESOURCE_MEM_TYPE_MASK       (3<<3)
-#define IORESOURCE_MEM_8BIT            (0<<3)
-#define IORESOURCE_MEM_16BIT           (1<<3)
-#define IORESOURCE_MEM_8AND16BIT       (2<<3)
-#define IORESOURCE_MEM_SHADOWABLE      (1<<5)  /* dup: IORESOURCE_SHADOWABLE */
-#define IORESOURCE_MEM_EXPANSIONROM    (1<<6)
-
-/* PC/ISA/whatever - the normal PC address spaces: IO and memory */
-extern struct resource ioport_resource;
-extern struct resource iomem_resource;
-
-extern int get_resource_list(struct resource *, char *buf, int size);
-
-extern int check_resource(struct resource *root, unsigned long, unsigned long);
-extern int request_resource(struct resource *root, struct resource *new);
-extern int release_resource(struct resource *new);
-extern int allocate_resource(struct resource *root, struct resource *new,
-                            unsigned long size,
-                            unsigned long min, unsigned long max,
-                            unsigned long align,
-                            void (*alignf)(void *, struct resource *,
-                                           unsigned long, unsigned long),
-                            void *alignf_data);
-
-/* Convenience shorthand with allocation */
-#define request_region(start,n,name)   __request_region(&ioport_resource, (start), (n), (name))
-#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))
-
-extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name);
-
-/* Compatibility cruft */
-#define check_region(start,n)  __check_region(&ioport_resource, (start), (n))
-#define release_region(start,n)        __release_region(&ioport_resource, (start), (n))
-#define check_mem_region(start,n)      __check_region(&iomem_resource, (start), (n))
-#define release_mem_region(start,n)    __release_region(&iomem_resource, (start), (n))
-
-extern int __check_region(struct resource *, unsigned long, unsigned long);
-extern void __release_region(struct resource *, unsigned long, unsigned long);
-
-#define get_ioport_list(buf)   get_resource_list(&ioport_resource, buf, PAGE_SIZE)
-#define get_mem_list(buf)      get_resource_list(&iomem_resource, buf, PAGE_SIZE)
-
-#define HAVE_AUTOIRQ
-extern void autoirq_setup(int waittime);
-extern int autoirq_report(int waittime);
-
-#endif /* _LINUX_IOPORT_H */
diff --git a/xen/include/xeno/irq.h b/xen/include/xeno/irq.h
deleted file mode 100644 (file)
index 7342491..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef __irq_h
-#define __irq_h
-
-#include <xeno/config.h>
-#include <xeno/spinlock.h>
-#include <asm/ptrace.h>
-
-/*
- * IRQ line status.
- */
-#define IRQ_INPROGRESS 1       /* IRQ handler active - do not enter! */
-#define IRQ_DISABLED   2       /* IRQ disabled - do not enter! */
-#define IRQ_PENDING    4       /* IRQ pending - replay on enable */
-#define IRQ_REPLAY     8       /* IRQ has been replayed but not acked yet */
-#define IRQ_AUTODETECT 16      /* IRQ is being autodetected */
-#define IRQ_WAITING    32      /* IRQ not yet seen - for autodetection */
-#define IRQ_LEVEL      64      /* IRQ level triggered */
-#define IRQ_MASKED     128     /* IRQ masked - shouldn't be seen again */
-#define IRQ_PER_CPU    256     /* IRQ is per CPU */
-
-/*
- * Interrupt controller descriptor. This is all we need
- * to describe about the low-level hardware. 
- */
-struct hw_interrupt_type {
-       const char * typename;
-       unsigned int (*startup)(unsigned int irq);
-       void (*shutdown)(unsigned int irq);
-       void (*enable)(unsigned int irq);
-       void (*disable)(unsigned int irq);
-       void (*ack)(unsigned int irq);
-       void (*end)(unsigned int irq);
-       void (*set_affinity)(unsigned int irq, unsigned long mask);
-};
-
-typedef struct hw_interrupt_type  hw_irq_controller;
-
-#include <asm/irq.h>
-
-/*
- * This is the "IRQ descriptor", which contains various information
- * about the irq, including what kind of hardware handling it has,
- * whether it is disabled etc etc.
- *
- * Pad this out to 32 bytes for cache and indexing reasons.
- */
-typedef struct {
-       unsigned int status;            /* IRQ status */
-       hw_irq_controller *handler;
-       struct irqaction *action;       /* IRQ action list */
-       unsigned int depth;             /* nested irq disables */
-       spinlock_t lock;
-} ____cacheline_aligned irq_desc_t;
-
-extern irq_desc_t irq_desc [NR_IRQS];
-
-extern int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);
-extern int setup_irq(unsigned int , struct irqaction * );
-
-extern hw_irq_controller no_irq_type;  /* needed in every arch ? */
-extern void no_action(int cpl, void *dev_id, struct pt_regs *regs);
-
-#endif /* __asm_h */
diff --git a/xen/include/xeno/irq_cpustat.h b/xen/include/xeno/irq_cpustat.h
deleted file mode 100644 (file)
index 589283b..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef __irq_cpustat_h
-#define __irq_cpustat_h
-
-/*
- * Contains default mappings for irq_cpustat_t, used by almost every
- * architecture.  Some arch (like s390) have per cpu hardware pages and
- * they define their own mappings for irq_stat.
- *
- * Keith Owens <kaos@ocs.com.au> July 2000.
- */
-
-#include <xeno/config.h>
-
-/*
- * Simple wrappers reducing source bloat.  Define all irq_stat fields
- * here, even ones that are arch dependent.  That way we get common
- * definitions instead of differing sets for each arch.
- */
-
-extern irq_cpustat_t irq_stat[];                       /* defined in asm/hardirq.h */
-
-#ifdef CONFIG_SMP
-#define __IRQ_STAT(cpu, member)        (irq_stat[cpu].member)
-#else
-#define __IRQ_STAT(cpu, member)        ((void)(cpu), irq_stat[0].member)
-#endif 
-
-  /* arch independent irq_stat fields */
-#define softirq_pending(cpu)   __IRQ_STAT((cpu), __softirq_pending)
-#define local_irq_count(cpu)   __IRQ_STAT((cpu), __local_irq_count)
-#define local_bh_count(cpu)    __IRQ_STAT((cpu), __local_bh_count)
-#define syscall_count(cpu)     __IRQ_STAT((cpu), __syscall_count)
-#define nmi_count(cpu)         __IRQ_STAT((cpu), __nmi_count)
-
-#endif /* __irq_cpustat_h */
diff --git a/xen/include/xeno/kdev_t.h b/xen/include/xeno/kdev_t.h
deleted file mode 100644 (file)
index 9d85cba..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-#ifndef _LINUX_KDEV_T_H
-#define _LINUX_KDEV_T_H
-#if defined(__KERNEL__) || defined(_LVM_H_INCLUDE)
-/*
-As a preparation for the introduction of larger device numbers,
-we introduce a type kdev_t to hold them. No information about
-this type is known outside of this include file.
-
-Objects of type kdev_t designate a device. Outside of the kernel
-the corresponding things are objects of type dev_t - usually an
-integral type with the device major and minor in the high and low
-bits, respectively. Conversion is done by
-
-extern kdev_t to_kdev_t(int);
-
-It is up to the various file systems to decide how objects of type
-dev_t are stored on disk.
-The only other point of contact between kernel and outside world
-are the system calls stat and mknod, new versions of which will
-eventually have to be used in libc.
-
-[Unfortunately, the floppy control ioctls fail to hide the internal
-kernel structures, and the fd_device field of a struct floppy_drive_struct
-is user-visible. So, it remains a dev_t for the moment, with some ugly
-conversions in floppy.c.]
-
-Inside the kernel, we aim for a kdev_t type that is a pointer
-to a structure with information about the device (like major,
-minor, size, blocksize, sectorsize, name, read-only flag,
-struct file_operations etc.).
-
-However, for the time being we let kdev_t be almost the same as dev_t:
-
-typedef struct { unsigned short major, minor; } kdev_t;
-
-Admissible operations on an object of type kdev_t:
-- passing it along
-- comparing it for equality with another such object
-- storing it in ROOT_DEV, inode->i_dev, inode->i_rdev, sb->s_dev,
-  bh->b_dev, req->rq_dev, de->dc_dev, tty->device
-- using its bit pattern as argument in a hash function
-- finding its major and minor
-- complaining about it
-
-An object of type kdev_t is created only by the function MKDEV(),
-with the single exception of the constant 0 (no device).
-
-Right now the other information mentioned above is usually found
-in static arrays indexed by major or major,minor.
-
-An obstacle to immediately using
-    typedef struct { ... (* lots of information *) } *kdev_t
-is the case of mknod used to create a block device that the
-kernel doesn't know about at present (but first learns about
-when some module is inserted).
-
-aeb - 950811
-*/
-
-/* Since MINOR(dev) is used as index in static arrays,
-   the kernel is not quite ready yet for larger minors.
-   However, everything runs fine with an arbitrary kdev_t type. */
-
-#define MINORBITS      8
-#define MINORMASK      ((1U << MINORBITS) - 1)
-
-typedef unsigned short kdev_t;
-
-#define MAJOR(dev)     ((unsigned int) ((dev) >> MINORBITS))
-#define MINOR(dev)     ((unsigned int) ((dev) & MINORMASK))
-#define HASHDEV(dev)   ((unsigned int) (dev))
-#define NODEV          0
-#define MKDEV(ma,mi)   (((ma) << MINORBITS) | (mi))
-#define B_FREE         0xffff          /* yuk */
-
-extern const char * kdevname(kdev_t);  /* note: returns pointer to static data! */
-
-/* 2.5.x compatibility */
-#define mk_kdev(a,b)   MKDEV(a,b)
-#define major(d)       MAJOR(d)
-#define minor(d)       MINOR(d)
-#define kdev_same(a,b) ((a) == (b))
-#define kdev_none(d)   (!(d))
-#define kdev_val(d)    ((unsigned int)(d))
-#define val_to_kdev(d) ((kdev_t)(d))
-
-/*
-As long as device numbers in the outside world have 16 bits only,
-we use these conversions.
-*/
-
-static inline unsigned int kdev_t_to_nr(kdev_t dev) {
-       return (MAJOR(dev)<<8) | MINOR(dev);
-}
-
-static inline kdev_t to_kdev_t(int dev)
-{
-       int major, minor;
-#if 0
-       major = (dev >> 16);
-       if (!major) {
-               major = (dev >> 8);
-               minor = (dev & 0xff);
-       } else
-               minor = (dev & 0xffff);
-#else
-       major = (dev >> 8);
-       minor = (dev & 0xff);
-#endif
-       return MKDEV(major, minor);
-}
-
-#else /* __KERNEL__ || _LVM_H_INCLUDE */
-
-/*
-Some programs want their definitions of MAJOR and MINOR and MKDEV
-from the kernel sources. These must be the externally visible ones.
-*/
-#define MAJOR(dev)     ((dev)>>8)
-#define MINOR(dev)     ((dev) & 0xff)
-#define MKDEV(ma,mi)   ((ma)<<8 | (mi))
-#endif /* __KERNEL__ || _LVM_H_INCLUDE */
-#endif
diff --git a/xen/include/xeno/kernel.h b/xen/include/xeno/kernel.h
deleted file mode 100644 (file)
index 993a6c1..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef _LINUX_KERNEL_H
-#define _LINUX_KERNEL_H
-
-/*
- * 'kernel.h' contains some often-used function prototypes etc
- */
-
-/*
- * min()/max() macros that also do
- * strict type-checking.. See the
- * "unnecessary" pointer comparison.
- */
-#define min(x,y) ({ \
-        const typeof(x) _x = (x);       \
-        const typeof(y) _y = (y);       \
-        (void) (&_x == &_y);            \
-        _x < _y ? _x : _y; })
-
-#define max(x,y) ({ \
-        const typeof(x) _x = (x);       \
-        const typeof(y) _y = (y);       \
-        (void) (&_x == &_y);            \
-        _x > _y ? _x : _y; })
-
-/*
- * ..and if you can't take the strict
- * types, you can specify one yourself.
- *
- * Or not use min/max at all, of course.
- */
-#define min_t(type,x,y) \
-        ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
-#define max_t(type,x,y) \
-        ({ type __x = (x); type __y = (y); __x > __y ? __x: __y; })
-
-#endif /* _LINUX_KERNEL_H */
-
diff --git a/xen/include/xeno/keyhandler.h b/xen/include/xeno/keyhandler.h
deleted file mode 100644 (file)
index d03e09a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/* 
-** We keep an array of 'handlers' for each key code between 0 and 255; 
-** this is intended to allow very simple debugging routines (toggle 
-** debug flag, dump registers, reboot, etc) to be hooked in in a slightly
-** nicer fashion than just editing the serial/keyboard drivers. 
-*/
-#include <xeno/sched.h>
-
-typedef void key_handler(unsigned char key, void *dev_id, 
-                        struct pt_regs *regs); 
-
-extern void add_key_handler(unsigned char key, 
-                           key_handler *handler, char *desc); 
-
-extern key_handler *get_key_handler(unsigned char key); 
-
diff --git a/xen/include/xeno/lib.h b/xen/include/xeno/lib.h
deleted file mode 100644 (file)
index f29964f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef __LIB_H__
-#define __LIB_H__
-
-#include <stdarg.h>
-#include <xeno/types.h>
-
-#ifndef NDEBUG
-#define ASSERT(_p) if ( !(_p) ) { printk("Assertion '%s' failed, line %d, file %s", #_p , __LINE__, __FILE__); *(int*)0=0; }
-#else
-#define ASSERT(_p) ((void)0)
-#endif
-
-#define reserve_bootmem(_p,_l) \
-printk("Memory Reservation 0x%lx, %lu bytes\n", (_p), (_l))
-
-/* lib.c */
-#include <xeno/string.h>
-
-/* JWS - pulled over linux string library ({asm,linux}/string.h)
-int memcmp(const void * cs,const void * ct,size_t count);
-void * memcpy(void * dest,const void *src,size_t count);
-int strncmp(const char * cs,const char * ct,size_t count);
-int strcmp(const char * cs,const char * ct);
-char * strcpy(char * dest,const char *src);
-char * strncpy(char * dest,const char *src,size_t count);
-void * memset(void * s,int c,size_t count);
-size_t strnlen(const char * s, size_t count);
-size_t strlen(const char * s);
-char * strchr(const char *,int);
-char * strstr(const char * s1,const char * s2);
-*/
-
-unsigned long str_to_quad(unsigned char *s);
-unsigned char *quad_to_str(unsigned long q, unsigned char *s);
-
-/* kernel.c */
-#define printk printf
-void printf (const char *format, ...);
-void panic(const char *format, ...);
-
-/* vsprintf.c */
-extern int sprintf(char * buf, const char * fmt, ...)
-       __attribute__ ((format (printf, 2, 3)));
-extern int vsprintf(char *buf, const char *, va_list);
-extern int snprintf(char * buf, size_t size, const char * fmt, ...)
-       __attribute__ ((format (printf, 3, 4)));
-extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
-
-long simple_strtol(const char *cp,char **endp,unsigned int base);
-unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base);
-long long simple_strtoll(const char *cp,char **endp,unsigned int base);
-
-/* Produce a 32-bit hash from a key string 'k' of length 'len' bytes. */
-u32 hash(unsigned char *k, unsigned long len);
-
-#endif /* __LIB_H__ */
diff --git a/xen/include/xeno/list.h b/xen/include/xeno/list.h
deleted file mode 100644 (file)
index a0e63ee..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-#ifndef _LINUX_LIST_H
-#define _LINUX_LIST_H
-
-#include <xeno/lib.h>
-
-/*
- * Simple doubly linked list implementation.
- *
- * Some of the internal functions ("__xxx") are useful when
- * manipulating whole lists rather than single entries, as
- * sometimes we already know the next/prev entries and we can
- * generate better code by using them directly rather than
- * using the generic single-entry routines.
- */
-
-struct list_head {
-       struct list_head *next, *prev;
-};
-
-#define LIST_HEAD_INIT(name) { &(name), &(name) }
-
-#define LIST_HEAD(name) \
-       struct list_head name = LIST_HEAD_INIT(name)
-
-#define INIT_LIST_HEAD(ptr) do { \
-       (ptr)->next = (ptr); (ptr)->prev = (ptr); \
-} while (0)
-
-/*
- * Insert a new entry between two known consecutive entries. 
- *
- * This is only for internal list manipulation where we know
- * the prev/next entries already!
- */
-static __inline__ void __list_add(struct list_head * new,
-       struct list_head * prev,
-       struct list_head * next)
-{
-       next->prev = new;
-       new->next = next;
-       new->prev = prev;
-       prev->next = new;
-}
-
-/**
- * list_add - add a new entry
- * @new: new entry to be added
- * @head: list head to add it after
- *
- * Insert a new entry after the specified head.
- * This is good for implementing stacks.
- */
-static __inline__ void list_add(struct list_head *new, struct list_head *head)
-{
-       __list_add(new, head, head->next);
-}
-
-/**
- * list_add_tail - add a new entry
- * @new: new entry to be added
- * @head: list head to add it before
- *
- * Insert a new entry before the specified head.
- * This is useful for implementing queues.
- */
-static __inline__ void list_add_tail(struct list_head *new, struct list_head *head)
-{
-       __list_add(new, head->prev, head);
-}
-
-/*
- * Delete a list entry by making the prev/next entries
- * point to each other.
- *
- * This is only for internal list manipulation where we know
- * the prev/next entries already!
- */
-static __inline__ void __list_del(struct list_head * prev,
-                                 struct list_head * next)
-{
-       next->prev = prev;
-       prev->next = next;
-}
-
-/**
- * list_del - deletes entry from list.
- * @entry: the element to delete from the list.
- * Note: list_empty on entry does not return true after this, the entry is in an undefined state.
- */
-static __inline__ void list_del(struct list_head *entry)
-{
-       ASSERT(entry->next->prev == entry);
-       ASSERT(entry->prev->next == entry);
-       __list_del(entry->prev, entry->next);
-}
-
-/**
- * list_del_init - deletes entry from list and reinitialize it.
- * @entry: the element to delete from the list.
- */
-static __inline__ void list_del_init(struct list_head *entry)
-{
-       __list_del(entry->prev, entry->next);
-       INIT_LIST_HEAD(entry); 
-}
-
-/**
- * list_empty - tests whether a list is empty
- * @head: the list to test.
- */
-static __inline__ int list_empty(struct list_head *head)
-{
-       return head->next == head;
-}
-
-/**
- * list_splice - join two lists
- * @list: the new list to add.
- * @head: the place to add it in the first list.
- */
-static __inline__ void list_splice(struct list_head *list, struct list_head *head)
-{
-       struct list_head *first = list->next;
-
-       if (first != list) {
-               struct list_head *last = list->prev;
-               struct list_head *at = head->next;
-
-               first->prev = head;
-               head->next = first;
-
-               last->next = at;
-               at->prev = last;
-       }
-}
-
-/**
- * list_entry - get the struct for this entry
- * @ptr:       the &struct list_head pointer.
- * @type:      the type of the struct this is embedded in.
- * @member:    the name of the list_struct within the struct.
- */
-#define list_entry(ptr, type, member) \
-       ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
-
-/**
- * list_for_each       -       iterate over a list
- * @pos:       the &struct list_head to use as a loop counter.
- * @head:      the head for your list.
- */
-#define list_for_each(pos, head) \
-       for (pos = (head)->next; pos != (head); pos = pos->next)
-               
-/**
- * list_for_each_safe  -       iterate over a list safe against removal of list entry
- * @pos:       the &struct list_head to use as a loop counter.
- * @n:         another &struct list_head to use as temporary storage
- * @head:      the head for your list.
- */
-#define list_for_each_safe(pos, n, head) \
-       for (pos = (head)->next, n = pos->next; pos != (head); \
-               pos = n, n = pos->next)
-
-#endif
diff --git a/xen/include/xeno/major.h b/xen/include/xeno/major.h
deleted file mode 100644 (file)
index b30f88b..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-#ifndef _LINUX_MAJOR_H
-#define _LINUX_MAJOR_H
-
-#include <xeno/kdev_t.h>
-
-/*
- * This file has definitions for major device numbers.
- * For the device number assignments, see Documentation/devices.txt.
- */
-
-/* limits */
-
-/*
- * Important: Don't change this to 256.  Major number 255 is and must be
- * reserved for future expansion into a larger dev_t space.
- */
-#define MAX_CHRDEV     255
-#define MAX_BLKDEV     255
-
-#define UNNAMED_MAJOR  0
-#define MEM_MAJOR      1
-#define RAMDISK_MAJOR  1
-#define FLOPPY_MAJOR   2
-#define PTY_MASTER_MAJOR 2
-#define IDE0_MAJOR     3
-#define PTY_SLAVE_MAJOR 3
-#define HD_MAJOR       IDE0_MAJOR
-#define TTY_MAJOR      4
-#define TTYAUX_MAJOR   5
-#define LP_MAJOR       6
-#define VCS_MAJOR      7
-#define LOOP_MAJOR     7
-#define SCSI_DISK0_MAJOR 8
-#define SCSI_TAPE_MAJOR        9
-#define MD_MAJOR        9
-#define MISC_MAJOR     10
-#define SCSI_CDROM_MAJOR 11
-#define QIC02_TAPE_MAJOR 12
-#define XT_DISK_MAJOR  13
-#define SOUND_MAJOR    14
-#define CDU31A_CDROM_MAJOR 15
-#define JOYSTICK_MAJOR 15
-#define GOLDSTAR_CDROM_MAJOR 16
-#define OPTICS_CDROM_MAJOR 17
-#define SANYO_CDROM_MAJOR 18
-#define CYCLADES_MAJOR  19
-#define CYCLADESAUX_MAJOR 20
-#define MITSUMI_X_CDROM_MAJOR 20
-#define MFM_ACORN_MAJOR 21     /* ARM Linux /dev/mfm */
-#define SCSI_GENERIC_MAJOR 21
-#define Z8530_MAJOR 34
-#define DIGI_MAJOR 23
-#define IDE1_MAJOR     22
-#define DIGICU_MAJOR 22
-#define MITSUMI_CDROM_MAJOR 23
-#define CDU535_CDROM_MAJOR 24
-#define STL_SERIALMAJOR 24
-#define MATSUSHITA_CDROM_MAJOR 25
-#define STL_CALLOUTMAJOR 25
-#define MATSUSHITA_CDROM2_MAJOR 26
-#define QIC117_TAPE_MAJOR 27
-#define MATSUSHITA_CDROM3_MAJOR 27
-#define MATSUSHITA_CDROM4_MAJOR 28
-#define STL_SIOMEMMAJOR 28
-#define ACSI_MAJOR     28
-#define AZTECH_CDROM_MAJOR 29
-#define GRAPHDEV_MAJOR 29      /* SparcLinux & Linux/68k /dev/fb */
-#define SHMIQ_MAJOR    85      /* Linux/mips, SGI /dev/shmiq */
-#define CM206_CDROM_MAJOR 32
-#define IDE2_MAJOR     33
-#define IDE3_MAJOR     34
-#define XPRAM_MAJOR     35      /* expanded storage on S/390 = "slow ram" */
-                                /* proposed by Peter                      */
-#define NETLINK_MAJOR  36
-#define PS2ESDI_MAJOR  36
-#define IDETAPE_MAJOR  37
-#define Z2RAM_MAJOR    37
-#define APBLOCK_MAJOR   38   /* AP1000 Block device */
-#define DDV_MAJOR       39   /* AP1000 DDV block device */
-#define NBD_MAJOR      43   /* Network block device    */
-#define RISCOM8_NORMAL_MAJOR 48
-#define DAC960_MAJOR   48      /* 48..55 */
-#define RISCOM8_CALLOUT_MAJOR 49
-#define MKISS_MAJOR    55
-#define DSP56K_MAJOR    55   /* DSP56001 processor device */
-
-#define IDE4_MAJOR     56
-#define IDE5_MAJOR     57
-
-#define LVM_BLK_MAJOR  58      /* Logical Volume Manager */
-
-#define SCSI_DISK1_MAJOR       65
-#define SCSI_DISK2_MAJOR       66
-#define SCSI_DISK3_MAJOR       67
-#define SCSI_DISK4_MAJOR       68
-#define SCSI_DISK5_MAJOR       69
-#define SCSI_DISK6_MAJOR       70
-#define SCSI_DISK7_MAJOR       71
-
-
-#define COMPAQ_SMART2_MAJOR    72
-#define COMPAQ_SMART2_MAJOR1   73
-#define COMPAQ_SMART2_MAJOR2   74
-#define COMPAQ_SMART2_MAJOR3   75
-#define COMPAQ_SMART2_MAJOR4   76
-#define COMPAQ_SMART2_MAJOR5   77
-#define COMPAQ_SMART2_MAJOR6   78
-#define COMPAQ_SMART2_MAJOR7   79
-
-#define SPECIALIX_NORMAL_MAJOR 75
-#define SPECIALIX_CALLOUT_MAJOR 76
-
-#define COMPAQ_CISS_MAJOR      104
-#define COMPAQ_CISS_MAJOR1     105
-#define COMPAQ_CISS_MAJOR2      106
-#define COMPAQ_CISS_MAJOR3      107
-#define COMPAQ_CISS_MAJOR4      108
-#define COMPAQ_CISS_MAJOR5      109
-#define COMPAQ_CISS_MAJOR6      110
-#define COMPAQ_CISS_MAJOR7      111
-
-#define ATARAID_MAJOR          114
-
-#define DASD_MAJOR      94     /* Official assignations from Peter */
-
-#define MDISK_MAJOR     95     /* Official assignations from Peter */
-
-#define I2O_MAJOR              80      /* 80->87 */
-
-#define IDE6_MAJOR     88
-#define IDE7_MAJOR     89
-#define IDE8_MAJOR     90
-#define IDE9_MAJOR     91
-
-#define UBD_MAJOR      98
-
-#define AURORA_MAJOR 79
-
-#define JSFD_MAJOR     99
-
-#define PHONE_MAJOR    100
-
-#define LVM_CHAR_MAJOR 109     /* Logical Volume Manager */
-
-#define        UMEM_MAJOR      116     /* http://www.umem.com/ Battery Backed RAM */
-
-#define RTF_MAJOR      150
-#define RAW_MAJOR      162
-
-#define USB_ACM_MAJOR          166
-#define USB_ACM_AUX_MAJOR      167
-#define USB_CHAR_MAJOR         180
-
-#define UNIX98_PTY_MASTER_MAJOR        128
-#define UNIX98_PTY_MAJOR_COUNT 8
-#define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT)
-
-#define VXVM_MAJOR             199     /* VERITAS volume i/o driver    */
-#define VXSPEC_MAJOR           200     /* VERITAS volume config driver */
-#define VXDMP_MAJOR            201     /* VERITAS volume multipath driver */
-
-#define MSR_MAJOR              202
-#define CPUID_MAJOR            203
-
-#define OSST_MAJOR     206     /* OnStream-SCx0 SCSI tape */
-
-#define IBM_TTY3270_MAJOR       227    /* Official allocations now */
-#define IBM_FS3270_MAJOR        228
-
-/*
- * Tests for SCSI devices.
- */
-
-#define SCSI_DISK_MAJOR(M) ((M) == SCSI_DISK0_MAJOR || \
-  ((M) >= SCSI_DISK1_MAJOR && (M) <= SCSI_DISK7_MAJOR))
-  
-#define SCSI_BLK_MAJOR(M) \
-  (SCSI_DISK_MAJOR(M)  \
-   || (M) == SCSI_CDROM_MAJOR)
-
-static __inline__ int scsi_blk_major(int m) {
-       return SCSI_BLK_MAJOR(m);
-}
-
-/*
- * Tests for IDE devices
- */
-#define IDE_DISK_MAJOR(M)      ((M) == IDE0_MAJOR || (M) == IDE1_MAJOR || \
-                               (M) == IDE2_MAJOR || (M) == IDE3_MAJOR || \
-                               (M) == IDE4_MAJOR || (M) == IDE5_MAJOR || \
-                               (M) == IDE6_MAJOR || (M) == IDE7_MAJOR || \
-                               (M) == IDE8_MAJOR || (M) == IDE9_MAJOR)
-
-static __inline__ int ide_blk_major(int m)
-{
-       return IDE_DISK_MAJOR(m);
-}
-
-#endif
diff --git a/xen/include/xeno/mii.h b/xen/include/xeno/mii.h
deleted file mode 100644 (file)
index 55bcbaf..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * linux/mii.h: definitions for MII-compatible transceivers
- * Originally drivers/net/sunhme.h.
- *
- * Copyright (C) 1996, 1999, 2001 David S. Miller (davem@redhat.com)
- */
-
-#ifndef __LINUX_MII_H__
-#define __LINUX_MII_H__
-
-#include <xeno/types.h>
-
-/* Generic MII registers. */
-
-#define MII_BMCR            0x00        /* Basic mode control register */
-#define MII_BMSR            0x01        /* Basic mode status register  */
-#define MII_PHYSID1         0x02        /* PHYS ID 1                   */
-#define MII_PHYSID2         0x03        /* PHYS ID 2                   */
-#define MII_ADVERTISE       0x04        /* Advertisement control reg   */
-#define MII_LPA             0x05        /* Link partner ability reg    */
-#define MII_EXPANSION       0x06        /* Expansion register          */
-#define MII_DCOUNTER        0x12        /* Disconnect counter          */
-#define MII_FCSCOUNTER      0x13        /* False carrier counter       */
-#define MII_NWAYTEST        0x14        /* N-way auto-neg test reg     */
-#define MII_RERRCOUNTER     0x15        /* Receive error counter       */
-#define MII_SREVISION       0x16        /* Silicon revision            */
-#define MII_RESV1           0x17        /* Reserved...                 */
-#define MII_LBRERROR        0x18        /* Lpback, rx, bypass error    */
-#define MII_PHYADDR         0x19        /* PHY address                 */
-#define MII_RESV2           0x1a        /* Reserved...                 */
-#define MII_TPISTATUS       0x1b        /* TPI status for 10mbps       */
-#define MII_NCONFIG         0x1c        /* Network interface config    */
-
-/* Basic mode control register. */
-#define BMCR_RESV               0x007f  /* Unused...                   */
-#define BMCR_CTST               0x0080  /* Collision test              */
-#define BMCR_FULLDPLX           0x0100  /* Full duplex                 */
-#define BMCR_ANRESTART          0x0200  /* Auto negotiation restart    */
-#define BMCR_ISOLATE            0x0400  /* Disconnect DP83840 from MII */
-#define BMCR_PDOWN              0x0800  /* Powerdown the DP83840       */
-#define BMCR_ANENABLE           0x1000  /* Enable auto negotiation     */
-#define BMCR_SPEED100           0x2000  /* Select 100Mbps              */
-#define BMCR_LOOPBACK           0x4000  /* TXD loopback bits           */
-#define BMCR_RESET              0x8000  /* Reset the DP83840           */
-
-/* Basic mode status register. */
-#define BMSR_ERCAP              0x0001  /* Ext-reg capability          */
-#define BMSR_JCD                0x0002  /* Jabber detected             */
-#define BMSR_LSTATUS            0x0004  /* Link status                 */
-#define BMSR_ANEGCAPABLE        0x0008  /* Able to do auto-negotiation */
-#define BMSR_RFAULT             0x0010  /* Remote fault detected       */
-#define BMSR_ANEGCOMPLETE       0x0020  /* Auto-negotiation complete   */
-#define BMSR_RESV               0x07c0  /* Unused...                   */
-#define BMSR_10HALF             0x0800  /* Can do 10mbps, half-duplex  */
-#define BMSR_10FULL             0x1000  /* Can do 10mbps, full-duplex  */
-#define BMSR_100HALF            0x2000  /* Can do 100mbps, half-duplex */
-#define BMSR_100FULL            0x4000  /* Can do 100mbps, full-duplex */
-#define BMSR_100BASE4           0x8000  /* Can do 100mbps, 4k packets  */
-
-/* Advertisement control register. */
-#define ADVERTISE_SLCT          0x001f  /* Selector bits               */
-#define ADVERTISE_CSMA          0x0001  /* Only selector supported     */
-#define ADVERTISE_10HALF        0x0020  /* Try for 10mbps half-duplex  */
-#define ADVERTISE_10FULL        0x0040  /* Try for 10mbps full-duplex  */
-#define ADVERTISE_100HALF       0x0080  /* Try for 100mbps half-duplex */
-#define ADVERTISE_100FULL       0x0100  /* Try for 100mbps full-duplex */
-#define ADVERTISE_100BASE4      0x0200  /* Try for 100mbps 4k packets  */
-#define ADVERTISE_RESV          0x1c00  /* Unused...                   */
-#define ADVERTISE_RFAULT        0x2000  /* Say we can detect faults    */
-#define ADVERTISE_LPACK         0x4000  /* Ack link partners response  */
-#define ADVERTISE_NPAGE         0x8000  /* Next page bit               */
-
-#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | \
-                       ADVERTISE_CSMA)
-#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \
-                       ADVERTISE_100HALF | ADVERTISE_100FULL)
-
-/* Link partner ability register. */
-#define LPA_SLCT                0x001f  /* Same as advertise selector  */
-#define LPA_10HALF              0x0020  /* Can do 10mbps half-duplex   */
-#define LPA_10FULL              0x0040  /* Can do 10mbps full-duplex   */
-#define LPA_100HALF             0x0080  /* Can do 100mbps half-duplex  */
-#define LPA_100FULL             0x0100  /* Can do 100mbps full-duplex  */
-#define LPA_100BASE4            0x0200  /* Can do 100mbps 4k packets   */
-#define LPA_RESV                0x1c00  /* Unused...                   */
-#define LPA_RFAULT              0x2000  /* Link partner faulted        */
-#define LPA_LPACK               0x4000  /* Link partner acked us       */
-#define LPA_NPAGE               0x8000  /* Next page bit               */
-
-#define LPA_DUPLEX             (LPA_10FULL | LPA_100FULL)
-#define LPA_100                        (LPA_100FULL | LPA_100HALF | LPA_100BASE4)
-
-/* Expansion register for auto-negotiation. */
-#define EXPANSION_NWAY          0x0001  /* Can do N-way auto-nego      */
-#define EXPANSION_LCWP          0x0002  /* Got new RX page code word   */
-#define EXPANSION_ENABLENPAGE   0x0004  /* This enables npage words    */
-#define EXPANSION_NPCAPABLE     0x0008  /* Link partner supports npage */
-#define EXPANSION_MFAULTS       0x0010  /* Multiple faults detected    */
-#define EXPANSION_RESV          0xffe0  /* Unused...                   */
-
-/* N-way test register. */
-#define NWAYTEST_RESV1          0x00ff  /* Unused...                   */
-#define NWAYTEST_LOOPBACK       0x0100  /* Enable loopback for N-way   */
-#define NWAYTEST_RESV2          0xfe00  /* Unused...                   */
-
-
-struct mii_if_info {
-       int phy_id;
-       int advertising;
-       int phy_id_mask;
-       int reg_num_mask;
-
-       unsigned int full_duplex : 1;   /* is full duplex? */
-       unsigned int force_media : 1;   /* is autoneg. disabled? */
-
-       struct net_device *dev;
-       int (*mdio_read) (struct net_device *dev, int phy_id, int location);
-       void (*mdio_write) (struct net_device *dev, int phy_id, int location, int val);
-};
-
-struct ethtool_cmd;
-struct mii_ioctl_data;
-
-#if 0
-extern int mii_link_ok (struct mii_if_info *mii);
-extern int mii_nway_restart (struct mii_if_info *mii);
-extern int mii_ethtool_gset(struct mii_if_info *mii, struct ethtool_cmd *ecmd);
-extern int mii_ethtool_sset(struct mii_if_info *mii, struct ethtool_cmd *ecmd);
-extern void mii_check_link (struct mii_if_info *mii);
-extern unsigned int mii_check_media (struct mii_if_info *mii,
-                                    unsigned int ok_to_print,
-                                    unsigned int init_media);
-extern int generic_mii_ioctl(struct mii_if_info *mii_if,
-                            struct mii_ioctl_data *mii_data, int cmd,
-                            unsigned int *duplex_changed);
-#endif
-
-
-/* This structure is used in all SIOCxMIIxxx ioctl calls */
-struct mii_ioctl_data {
-       u16             phy_id;
-       u16             reg_num;
-       u16             val_in;
-       u16             val_out;
-};
-
-
-/**
- * mii_nway_result
- * @negotiated: value of MII ANAR and'd with ANLPAR
- *
- * Given a set of MII abilities, check each bit and returns the
- * currently supported media, in the priority order defined by
- * IEEE 802.3u.  We use LPA_xxx constants but note this is not the
- * value of LPA solely, as described above.
- *
- * The one exception to IEEE 802.3u is that 100baseT4 is placed
- * between 100T-full and 100T-half.  If your phy does not support
- * 100T4 this is fine.  If your phy places 100T4 elsewhere in the
- * priority order, you will need to roll your own function.
- */
-static inline unsigned int mii_nway_result (unsigned int negotiated)
-{
-       unsigned int ret;
-
-       if (negotiated & LPA_100FULL)
-               ret = LPA_100FULL;
-       else if (negotiated & LPA_100BASE4)
-               ret = LPA_100BASE4;
-       else if (negotiated & LPA_100HALF)
-               ret = LPA_100HALF;
-       else if (negotiated & LPA_10FULL)
-               ret = LPA_10FULL;
-       else
-               ret = LPA_10HALF;
-
-       return ret;
-}
-
-/**
- * mii_duplex
- * @duplex_lock: Non-zero if duplex is locked at full
- * @negotiated: value of MII ANAR and'd with ANLPAR
- *
- * A small helper function for a common case.  Returns one
- * if the media is operating or locked at full duplex, and
- * returns zero otherwise.
- */
-static inline unsigned int mii_duplex (unsigned int duplex_lock,
-                                      unsigned int negotiated)
-{
-       if (duplex_lock)
-               return 1;
-       if (mii_nway_result(negotiated) & LPA_DUPLEX)
-               return 1;
-       return 0;
-}
-
-
-#endif /* __LINUX_MII_H__ */
diff --git a/xen/include/xeno/mm.h b/xen/include/xeno/mm.h
deleted file mode 100644 (file)
index 0774571..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-
-#ifndef __XENO_MM_H__
-#define __XENO_MM_H__
-
-#include <xeno/config.h>
-#include <xeno/list.h>
-#include <xeno/spinlock.h>
-#include <xeno/perfc.h>
-#include <xeno/sched.h>
-
-#include <asm/pgalloc.h>
-#include <asm/atomic.h>
-#include <asm/desc.h>
-#include <asm/flushtlb.h>
-#include <asm/io.h>
-
-#include <hypervisor-ifs/hypervisor-if.h>
-
-/*
- * These are for compatibility with calls to the Linux memory allocators.
- */
-
-#define __GFP_DMA       0x01
-#define GFP_DMA         __GFP_DMA
-#define __GFP_WAIT      0x10    /* Can wait and reschedule? */
-#define __GFP_HIGH      0x20    /* Should access emergency pools? */
-#define __GFP_IO        0x40    /* Can start low memory physical IO? */
-#define __GFP_HIGHIO    0x80    /* Can start high mem physical IO? */
-#define __GFP_FS        0x100   /* Can call down to low-level FS? */
-#define GFP_ATOMIC      (__GFP_HIGH)
-#define GFP_KERNEL      (__GFP_HIGH | __GFP_WAIT | __GFP_IO | \
-                         __GFP_HIGHIO | __GFP_FS)
-
-/*
- * The following is for page_alloc.c.
- */
-
-void init_page_allocator(unsigned long min, unsigned long max);
-unsigned long __get_free_pages(int mask, int order);
-void __free_pages(unsigned long p, int order);
-#define get_free_page(_m) (__get_free_pages((_m),0))
-#define __get_free_page(_m) (__get_free_pages((_m),0))
-#define free_pages(_p,_o) (__free_pages(_p,_o))
-#define free_page(_p) (__free_pages(_p,0))
-
-
-/*
- * Per-page-frame information.
- */
-
-struct pfn_info
-{
-    /* Each frame can be threaded onto a doubly-linked list. */
-    struct list_head list;
-    /* The following possible uses are context-dependent. */
-    union {
-        /* Page is in use and not a zombie: we keep a pointer to its owner. */
-        struct task_struct *domain;
-        /* Page is not currently allocated: mask of possibly-tainted TLBs. */
-        unsigned long cpu_mask;
-        /* Page is a zombie: this word currently has no use. */
-        unsigned long _unused;
-    } u;
-    /* Reference count and various PGC_xxx flags and fields. */
-    unsigned long       count_and_flags;
-    /* Type reference count and various PGT_xxx flags and fields. */
-    unsigned long       type_and_flags;
-    /* Timestamp from 'TLB clock', used to reduce need for safety flushes. */
-    unsigned long       tlbflush_timestamp;
-};
-
- /* The following page types are MUTUALLY EXCLUSIVE. */
-#define PGT_none            (0<<29) /* no special uses of this page */
-#define PGT_l1_page_table   (1<<29) /* using this page as an L1 page table? */
-#define PGT_l2_page_table   (2<<29) /* using this page as an L2 page table? */
-#define PGT_l3_page_table   (3<<29) /* using this page as an L3 page table? */
-#define PGT_l4_page_table   (4<<29) /* using this page as an L4 page table? */
-#define PGT_gdt_page        (5<<29) /* using this page in a GDT? */
-#define PGT_ldt_page        (6<<29) /* using this page in an LDT? */
-#define PGT_writeable_page  (7<<29) /* has writable mappings of this page? */
-#define PGT_type_mask       (7<<29) /* Bits 29-31. */
- /* Has this page been validated for use as its current type? */
-#define _PGT_validated      28
-#define PGT_validated       (1<<_PGT_validated)
- /* 28-bit count of uses of this frame as its current type. */
-#define PGT_count_mask      ((1<<28)-1)
-
- /* The owner of this page is dead: 'u.domain' is no longer valid. */
-#define _PGC_zombie                   31
-#define PGC_zombie                    (1<<_PGC_zombie)
- /* For safety, force a TLB flush when this page's type changes. */
-#define _PGC_tlb_flush_on_type_change 30
-#define PGC_tlb_flush_on_type_change  (1<<_PGC_tlb_flush_on_type_change)
- /* Owning guest has pinned this page to its current type? */
-#define _PGC_guest_pinned             29
-#define PGC_guest_pinned              (1<<_PGC_guest_pinned)
- /* Cleared when the owning guest 'frees' this page. */
-#define _PGC_allocated                28
-#define PGC_allocated                 (1<<_PGC_allocated)
- /* 28-bit count of references to this frame. */
-#define PGC_count_mask                ((1<<28)-1)
-
-/* We trust the slab allocator in slab.c, and our use of it. */
-#define PageSlab(page)         (1)
-#define PageSetSlab(page)      ((void)0)
-#define PageClearSlab(page)    ((void)0)
-
-#define IS_XEN_HEAP_FRAME(_pfn) (page_to_phys(_pfn) < MAX_MONITOR_ADDRESS)
-
-#define SHARE_PFN_WITH_DOMAIN(_pfn, _dom)                                  \
-    do {                                                                   \
-        (_pfn)->u.domain = (_dom);                                         \
-        wmb(); /* install valid domain ptr before updating refcnt. */      \
-        (_pfn)->count_and_flags = 1; /* Xen holds a writeable reference */ \
-        (_pfn)->type_and_flags  = PGT_writeable_page | PGT_validated | 1;  \
-    } while ( 0 )
-
-#define UNSHARE_PFN(_pfn) put_page_and_type(_pfn)
-
-extern struct pfn_info *frame_table;
-extern unsigned long frame_table_size;
-extern struct list_head free_list;
-extern spinlock_t free_list_lock;
-extern unsigned int free_pfns;
-extern unsigned long max_page;
-void init_frametable(unsigned long nr_pages);
-
-struct pfn_info *alloc_domain_page(struct task_struct *p);
-void free_domain_page(struct pfn_info *page);
-
-int alloc_page_type(struct pfn_info *page, unsigned int type);
-void free_page_type(struct pfn_info *page, unsigned int type);
-
-static inline void put_page(struct pfn_info *page)
-{
-    unsigned long nx, x, y = page->count_and_flags;
-
-    do {
-        x  = y;
-        nx = x - 1;
-    }
-    while ( unlikely((y = cmpxchg(&page->count_and_flags, x, nx)) != x) );
-
-    if ( unlikely((nx & PGC_count_mask) == 0) )
-        free_domain_page(page);
-}
-
-
-static inline int get_page(struct pfn_info *page,
-                           struct task_struct *domain)
-{
-    unsigned long x, nx, y = page->count_and_flags;
-    struct task_struct *p, *np = page->u.domain;
-
-    do {
-        x  = y;
-        nx = x + 1;
-        p  = np;
-        if ( unlikely((x & PGC_count_mask) == 0) ||  /* Not allocated? */
-             unlikely((nx & PGC_count_mask) == 0) || /* Count overflow? */
-             unlikely(x & PGC_zombie) ||             /* Zombie? */
-             unlikely(p != domain) )                 /* Wrong owner? */
-        {
-            DPRINTK("Error pfn %08lx: ed=%p,sd=%p,caf=%08lx\n",
-                    page_to_pfn(page), domain, p, x);
-            return 0;
-        }
-        __asm__ __volatile__(
-            LOCK_PREFIX "cmpxchg8b %3"
-            : "=a" (np), "=d" (y), "=b" (p),
-              "=m" (*(volatile unsigned long long *)(&page->u.domain))
-            : "0" (p), "1" (x), "b" (p), "c" (nx) );
-    }
-    while ( unlikely(np != p) || unlikely(y != x) );
-
-    return 1;
-}
-
-
-static inline void put_page_type(struct pfn_info *page)
-{
-    unsigned long nx, x, y = page->type_and_flags;
-
- again:
-    do {
-        x  = y;
-        nx = x - 1;
-        if ( unlikely((nx & PGT_count_mask) == 0) )
-        {
-            page->tlbflush_timestamp = tlbflush_clock;
-            if ( unlikely((nx & PGT_type_mask) <= PGT_l4_page_table) &&
-                 likely(nx & PGT_validated) )
-            {
-                /*
-                 * Page-table pages must be unvalidated when count is zero. The
-                 * 'free' is safe because the refcnt is non-zero and the
-                 * validated bit is clear => other ops will spin or fail.
-                 */
-                if ( unlikely((y = cmpxchg(&page->type_and_flags, x, 
-                                           x & ~PGT_validated)) != x) )
-                    goto again;
-                /* We cleared the 'valid bit' so we must do the clear up. */
-                free_page_type(page, x & PGT_type_mask);
-                /* Carry on as we were, but with the 'valid bit' now clear. */
-                x  &= ~PGT_validated;
-                nx &= ~PGT_validated;
-            }
-        }
-    }
-    while ( unlikely((y = cmpxchg(&page->type_and_flags, x, nx)) != x) );
-}
-
-
-static inline int get_page_type(struct pfn_info *page, unsigned long type)
-{
-    unsigned long nx, x, y = page->type_and_flags;
- again:
-    do {
-        x  = y;
-        nx = x + 1;
-        if ( unlikely((nx & PGT_count_mask) == 0) )
-        {
-            DPRINTK("Type count overflow on pfn %08lx\n", page_to_pfn(page));
-            return 0;
-        }
-        else if ( unlikely((x & PGT_count_mask) == 0) )
-        {
-            if ( (x & PGT_type_mask) != type )
-            {
-                nx &= ~(PGT_type_mask | PGT_validated);
-                nx |= type;
-                /* No extra validation needed for writeable pages. */
-                if ( type == PGT_writeable_page )
-                    nx |= PGT_validated;
-            }
-        }
-        else if ( unlikely((x & PGT_type_mask) != type) )
-        {
-            DPRINTK("Unexpected type (saw %08lx != exp %08lx) for pfn %08lx\n",
-                    x & PGT_type_mask, type, page_to_pfn(page));
-            return 0;
-        }
-        else if ( unlikely(!(x & PGT_validated)) )
-        {
-            /* Someone else is updating validation of this page. Wait... */
-            while ( (y = page->type_and_flags) != x )
-            {
-                rep_nop();
-                barrier();
-            }
-            goto again;
-        }
-    }
-    while ( unlikely((y = cmpxchg(&page->type_and_flags, x, nx)) != x) );
-
-    if ( unlikely(!(nx & PGT_validated)) )
-    {
-        /* Try to validate page type; drop the new reference on failure. */
-        if ( unlikely(!alloc_page_type(page, type)) )
-        {
-            DPRINTK("Error while validating pfn %08lx for type %08lx\n",
-                    page_to_pfn(page), type);
-            put_page_type(page);
-            return 0;
-        }
-        set_bit(_PGT_validated, &page->type_and_flags);
-    }
-
-    return 1;
-}
-
-
-static inline void put_page_and_type(struct pfn_info *page)
-{
-    put_page_type(page);
-    put_page(page);
-}
-
-
-static inline int get_page_and_type(struct pfn_info *page,
-                                    struct task_struct *domain,
-                                    unsigned int type)
-{
-    int rc = get_page(page, domain);
-
-    if ( likely(rc) && unlikely(!get_page_type(page, type)) )
-    {
-        put_page(page);
-        rc = 0;
-    }
-
-    return rc;
-}
-
-#define ASSERT_PAGE_IS_TYPE(_p, _t)                \
-    ASSERT(((_p)->type_and_flags & PGT_type_mask) == (_t));  \
-    ASSERT(((_p)->type_and_flags & PGT_count_mask) != 0)
-#define ASSERT_PAGE_IS_DOMAIN(_p, _d)              \
-    ASSERT(((_p)->count_and_flags & PGC_count_mask) != 0);  \
-    ASSERT((_p)->u.domain == (_d))
-
-int check_descriptor(unsigned long a, unsigned long b);
-
-/*
- * The MPT (machine->physical mapping table) is an array of word-sized
- * values, indexed on machine frame number. It is expected that guest OSes
- * will use it to store a "physical" frame number to give the appearance of
- * contiguous (or near contiguous) physical memory.
- */
-#undef  machine_to_phys_mapping
-#define machine_to_phys_mapping ((unsigned long *)RDWR_MPT_VIRT_START)
-
-/* Part of the domain API. */
-int do_mmu_update(mmu_update_t *updates, int count);
-
-#define DEFAULT_GDT_ENTRIES     ((LAST_RESERVED_GDT_ENTRY*8)+7)
-#define DEFAULT_GDT_ADDRESS     ((unsigned long)gdt_table)
-
-#ifdef MEMORY_GUARD
-void *memguard_init(void *heap_start);
-void memguard_guard_range(void *p, unsigned long l);
-void memguard_unguard_range(void *p, unsigned long l);
-int memguard_is_guarded(void *p);
-#else
-#define memguard_init(_s)              (_s)
-#define memguard_guard_range(_p,_l)    ((void)0)
-#define memguard_unguard_range(_p,_l)  ((void)0)
-#define memguard_is_guarded(_p)        (0)
-#endif
-
-#endif /* __XENO_MM_H__ */
diff --git a/xen/include/xeno/module.h b/xen/include/xeno/module.h
deleted file mode 100644 (file)
index 468515c..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Dynamic loading of modules into the kernel.
- *
- * Rewritten by Richard Henderson <rth@tamu.edu> Dec 1996
- */
-
-#ifndef _LINUX_MODULE_H
-#define _LINUX_MODULE_H
-
-#include <xeno/config.h>
-#include <xeno/spinlock.h>
-#include <xeno/list.h>
-
-#ifdef __GENKSYMS__
-#  define _set_ver(sym) sym
-#  undef  MODVERSIONS
-#  define MODVERSIONS
-#else /* ! __GENKSYMS__ */
-# if !defined(MODVERSIONS) && defined(EXPORT_SYMTAB)
-#   define _set_ver(sym) sym
-#   include <xeno/modversions.h>
-# endif
-#endif /* __GENKSYMS__ */
-
-#include <asm/atomic.h>
-
-/* Don't need to bring in all of uaccess.h just for this decl.  */
-struct exception_table_entry;
-
-/* Used by get_kernel_syms, which is obsolete.  */
-struct kernel_sym
-{
-       unsigned long value;
-       char name[60];          /* should have been 64-sizeof(long); oh well */
-};
-
-struct module_symbol
-{
-       unsigned long value;
-       const char *name;
-};
-
-struct module_ref
-{
-       struct module *dep;     /* "parent" pointer */
-       struct module *ref;     /* "child" pointer */
-       struct module_ref *next_ref;
-};
-
-/* TBD */
-struct module_persist;
-
-struct module
-{
-       unsigned long size_of_struct;   /* == sizeof(module) */
-       struct module *next;
-       const char *name;
-       unsigned long size;
-
-       union
-       {
-               atomic_t usecount;
-               long pad;
-       } uc;                           /* Needs to keep its size - so says rth */
-
-       unsigned long flags;            /* AUTOCLEAN et al */
-
-       unsigned nsyms;
-       unsigned ndeps;
-
-       struct module_symbol *syms;
-       struct module_ref *deps;
-       struct module_ref *refs;
-       int (*init)(void);
-       void (*cleanup)(void);
-       const struct exception_table_entry *ex_table_start;
-       const struct exception_table_entry *ex_table_end;
-#ifdef __alpha__
-       unsigned long gp;
-#endif
-       /* Members past this point are extensions to the basic
-          module support and are optional.  Use mod_member_present()
-          to examine them.  */
-       const struct module_persist *persist_start;
-       const struct module_persist *persist_end;
-       int (*can_unload)(void);
-       int runsize;                    /* In modutils, not currently used */
-       const char *kallsyms_start;     /* All symbols for kernel debugging */
-       const char *kallsyms_end;
-       const char *archdata_start;     /* arch specific data for module */
-       const char *archdata_end;
-       const char *kernel_data;        /* Reserved for kernel internal use */
-};
-
-struct module_info
-{
-       unsigned long addr;
-       unsigned long size;
-       unsigned long flags;
-       long usecount;
-};
-
-/* Bits of module.flags.  */
-
-#define MOD_UNINITIALIZED      0
-#define MOD_RUNNING            1
-#define MOD_DELETED            2
-#define MOD_AUTOCLEAN          4
-#define MOD_VISITED            8
-#define MOD_USED_ONCE          16
-#define MOD_JUST_FREED         32
-#define MOD_INITIALIZING       64
-
-/* Values for query_module's which.  */
-
-#define QM_MODULES     1
-#define QM_DEPS                2
-#define QM_REFS                3
-#define QM_SYMBOLS     4
-#define QM_INFO                5
-
-/* Can the module be queried? */
-#define MOD_CAN_QUERY(mod) (((mod)->flags & (MOD_RUNNING | MOD_INITIALIZING)) && !((mod)->flags & MOD_DELETED))
-
-/* When struct module is extended, we must test whether the new member
-   is present in the header received from insmod before we can use it.  
-   This function returns true if the member is present.  */
-
-#define mod_member_present(mod,member)                                         \
-       ((unsigned long)(&((struct module *)0L)->member + 1)            \
-        <= (mod)->size_of_struct)
-
-/*
- * Ditto for archdata.  Assumes mod->archdata_start and mod->archdata_end
- * are validated elsewhere.
- */
-#define mod_archdata_member_present(mod, type, member)                 \
-       (((unsigned long)(&((type *)0L)->member) +                      \
-         sizeof(((type *)0L)->member)) <=                              \
-        ((mod)->archdata_end - (mod)->archdata_start))
-        
-
-/* Check if an address p with number of entries n is within the body of module m */
-#define mod_bound(p, n, m) ((unsigned long)(p) >= ((unsigned long)(m) + ((m)->size_of_struct)) && \
-                (unsigned long)((p)+(n)) <= (unsigned long)(m) + (m)->size)
-
-/* Backwards compatibility definition.  */
-
-#define GET_USE_COUNT(module)  (atomic_read(&(module)->uc.usecount))
-
-/* Poke the use count of a module.  */
-
-#define __MOD_INC_USE_COUNT(mod)                                       \
-       (atomic_inc(&(mod)->uc.usecount), (mod)->flags |= MOD_VISITED|MOD_USED_ONCE)
-#define __MOD_DEC_USE_COUNT(mod)                                       \
-       (atomic_dec(&(mod)->uc.usecount), (mod)->flags |= MOD_VISITED)
-#define __MOD_IN_USE(mod)                                              \
-       (mod_member_present((mod), can_unload) && (mod)->can_unload     \
-        ? (mod)->can_unload() : atomic_read(&(mod)->uc.usecount))
-
-/* Indirect stringification.  */
-
-#define __MODULE_STRING_1(x)   #x
-#define __MODULE_STRING(x)     __MODULE_STRING_1(x)
-
-/* Generic inter module communication.
- *
- * NOTE: This interface is intended for small amounts of data that are
- *       passed between two objects and either or both of the objects
- *       might be compiled as modules.  Do not over use this interface.
- *
- *       If more than two objects need to communicate then you probably
- *       need a specific interface instead of abusing this generic
- *       interface.  If both objects are *always* built into the kernel
- *       then a global extern variable is good enough, you do not need
- *       this interface.
- *
- * Keith Owens <kaos@ocs.com.au> 28 Oct 2000.
- */
-
-#ifdef __KERNEL__
-#define HAVE_INTER_MODULE
-extern void inter_module_register(const char *, struct module *, const void *);
-extern void inter_module_unregister(const char *);
-extern const void *inter_module_get(const char *);
-extern const void *inter_module_get_request(const char *, const char *);
-extern void inter_module_put(const char *);
-
-struct inter_module_entry {
-       struct list_head list;
-       const char *im_name;
-       struct module *owner;
-       const void *userdata;
-};
-
-#if 0
-extern int try_inc_mod_count(struct module *mod);
-#else
-static inline int try_inc_mod_count(struct module * mod)
-{
-    if ( mod ) __MOD_INC_USE_COUNT(mod);
-    return 1;
-}
-#endif
-#endif /* __KERNEL__ */
-
-#if defined(MODULE) && !defined(__GENKSYMS__)
-
-/* Embedded module documentation macros.  */
-
-/* For documentation purposes only.  */
-
-#define MODULE_AUTHOR(name)                                               \
-const char __module_author[] __attribute__((section(".modinfo"))) =       \
-"author=" name
-
-#define MODULE_DESCRIPTION(desc)                                          \
-const char __module_description[] __attribute__((section(".modinfo"))) =   \
-"description=" desc
-
-/* Could potentially be used by kmod...  */
-
-#define MODULE_SUPPORTED_DEVICE(dev)                                      \
-const char __module_device[] __attribute__((section(".modinfo"))) =       \
-"device=" dev
-
-/* Used to verify parameters given to the module.  The TYPE arg should
-   be a string in the following format:
-       [min[-max]]{b,h,i,l,s}
-   The MIN and MAX specifiers delimit the length of the array.  If MAX
-   is omitted, it defaults to MIN; if both are omitted, the default is 1.
-   The final character is a type specifier:
-       b       byte
-       h       short
-       i       int
-       l       long
-       s       string
-*/
-
-#define MODULE_PARM(var,type)                  \
-const char __module_parm_##var[]               \
-__attribute__((section(".modinfo"))) =         \
-"parm_" __MODULE_STRING(var) "=" type
-
-#define MODULE_PARM_DESC(var,desc)             \
-const char __module_parm_desc_##var[]          \
-__attribute__((section(".modinfo"))) =         \
-"parm_desc_" __MODULE_STRING(var) "=" desc
-
-/*
- * MODULE_DEVICE_TABLE exports information about devices
- * currently supported by this module.  A device type, such as PCI,
- * is a C-like identifier passed as the first arg to this macro.
- * The second macro arg is the variable containing the device
- * information being made public.
- *
- * The following is a list of known device types (arg 1),
- * and the C types which are to be passed as arg 2.
- * pci - struct pci_device_id - List of PCI ids supported by this module
- * isapnp - struct isapnp_device_id - List of ISA PnP ids supported by this module
- * usb - struct usb_device_id - List of USB ids supported by this module
- */
-#define MODULE_GENERIC_TABLE(gtype,name)       \
-static const unsigned long __module_##gtype##_size \
-  __attribute__ ((unused)) = sizeof(struct gtype##_id); \
-static const struct gtype##_id * __module_##gtype##_table \
-  __attribute__ ((unused)) = name
-
-/*
- * The following license idents are currently accepted as indicating free
- * software modules
- *
- *     "GPL"                           [GNU Public License v2 or later]
- *     "GPL and additional rights"     [GNU Public License v2 rights and more]
- *     "Dual BSD/GPL"                  [GNU Public License v2 or BSD license choice]
- *     "Dual MPL/GPL"                  [GNU Public License v2 or Mozilla license choice]
- *
- * The following other idents are available
- *
- *     "Proprietary"                   [Non free products]
- *
- * There are dual licensed components, but when running with Linux it is the
- * GPL that is relevant so this is a non issue. Similarly LGPL linked with GPL
- * is a GPL combined work.
- *
- * This exists for several reasons
- * 1.  So modinfo can show license info for users wanting to vet their setup 
- *     is free
- * 2.  So the community can ignore bug reports including proprietary modules
- * 3.  So vendors can do likewise based on their own policies
- */
-#define MODULE_LICENSE(license)        \
-static const char __module_license[] __attribute__((section(".modinfo"))) =   \
-"license=" license
-
-/* Define the module variable, and usage macros.  */
-extern struct module __this_module;
-
-#define THIS_MODULE            (&__this_module)
-#define MOD_INC_USE_COUNT      __MOD_INC_USE_COUNT(THIS_MODULE)
-#define MOD_DEC_USE_COUNT      __MOD_DEC_USE_COUNT(THIS_MODULE)
-#define MOD_IN_USE             __MOD_IN_USE(THIS_MODULE)
-
-#if 0
-#include <xeno/version.h>
-static const char __module_kernel_version[] __attribute__((section(".modinfo"))) =
-"kernel_version=" UTS_RELEASE;
-#ifdef MODVERSIONS
-static const char __module_using_checksums[] __attribute__((section(".modinfo"))) =
-"using_checksums=1";
-#endif
-#endif
-
-#else /* MODULE */
-
-#define MODULE_AUTHOR(name)
-#define MODULE_LICENSE(license)
-#define MODULE_DESCRIPTION(desc)
-#define MODULE_SUPPORTED_DEVICE(name)
-#define MODULE_PARM(var,type)
-#define MODULE_PARM_DESC(var,desc)
-
-/* Create a dummy reference to the table to suppress gcc unused warnings.  Put
- * the reference in the .data.exit section which is discarded when code is built
- * in, so the reference does not bloat the running kernel.  Note: cannot be
- * const, other exit data may be writable.
- */
-#define MODULE_GENERIC_TABLE(gtype,name) \
-static const struct gtype##_id * __module_##gtype##_table \
-  __attribute__ ((unused, __section__(".data.exit"))) = name
-
-#ifndef __GENKSYMS__
-
-#define THIS_MODULE            NULL
-#define MOD_INC_USE_COUNT      do { } while (0)
-#define MOD_DEC_USE_COUNT      do { } while (0)
-#define MOD_IN_USE             1
-
-extern struct module *module_list;
-
-#endif /* !__GENKSYMS__ */
-
-#endif /* MODULE */
-
-#define MODULE_DEVICE_TABLE(type,name)         \
-  MODULE_GENERIC_TABLE(type##_device,name)
-
-/* Export a symbol either from the kernel or a module.
-
-   In the kernel, the symbol is added to the kernel's global symbol table.
-
-   In a module, it controls which variables are exported.  If no
-   variables are explicitly exported, the action is controled by the
-   insmod -[xX] flags.  Otherwise, only the variables listed are exported.
-   This obviates the need for the old register_symtab() function.  */
-
-#if defined(__GENKSYMS__)
-
-/* We want the EXPORT_SYMBOL tag left intact for recognition.  */
-
-#elif !defined(CONFIG_MODULES)
-
-#define __EXPORT_SYMBOL(sym,str)
-#define EXPORT_SYMBOL(var)
-#define EXPORT_SYMBOL_NOVERS(var)
-#define EXPORT_SYMBOL_GPL(var)
-
-#elif !defined(EXPORT_SYMTAB)
-
-#define __EXPORT_SYMBOL(sym,str)   error this_object_must_be_defined_as_export_objs_in_the_Makefile
-#define EXPORT_SYMBOL(var)        error this_object_must_be_defined_as_export_objs_in_the_Makefile
-#define EXPORT_SYMBOL_NOVERS(var)  error this_object_must_be_defined_as_export_objs_in_the_Makefile
-#define EXPORT_SYMBOL_GPL(var)  error this_object_must_be_defined_as_export_objs_in_the_Makefile
-
-#else
-
-#define __EXPORT_SYMBOL(sym, str)                      \
-const char __kstrtab_##sym[]                           \
-__attribute__((section(".kstrtab"))) = str;            \
-const struct module_symbol __ksymtab_##sym             \
-__attribute__((section("__ksymtab"))) =                        \
-{ (unsigned long)&sym, __kstrtab_##sym }
-
-#define __EXPORT_SYMBOL_GPL(sym, str)                  \
-const char __kstrtab_##sym[]                           \
-__attribute__((section(".kstrtab"))) = "GPLONLY_" str; \
-const struct module_symbol __ksymtab_##sym             \
-__attribute__((section("__ksymtab"))) =                        \
-{ (unsigned long)&sym, __kstrtab_##sym }
-
-#if defined(MODVERSIONS) || !defined(CONFIG_MODVERSIONS)
-#define EXPORT_SYMBOL(var)  __EXPORT_SYMBOL(var, __MODULE_STRING(var))
-#define EXPORT_SYMBOL_GPL(var)  __EXPORT_SYMBOL_GPL(var, __MODULE_STRING(var))
-#else
-#define EXPORT_SYMBOL(var)  __EXPORT_SYMBOL(var, __MODULE_STRING(__VERSIONED_SYMBOL(var)))
-#define EXPORT_SYMBOL_GPL(var)  __EXPORT_SYMBOL(var, __MODULE_STRING(__VERSIONED_SYMBOL(var)))
-#endif
-
-#define EXPORT_SYMBOL_NOVERS(var)  __EXPORT_SYMBOL(var, __MODULE_STRING(var))
-
-#endif /* __GENKSYMS__ */
-
-#ifdef MODULE
-/* Force a module to export no symbols.  */
-#define EXPORT_NO_SYMBOLS  __asm__(".section __ksymtab\n.previous")
-#else
-#define EXPORT_NO_SYMBOLS
-#endif /* MODULE */
-
-#ifdef CONFIG_MODULES
-#define SET_MODULE_OWNER(some_struct) do { (some_struct)->owner = THIS_MODULE; } while (0)
-#else
-#define SET_MODULE_OWNER(some_struct) do { } while (0)
-#endif
-
-#endif /* _LINUX_MODULE_H */
diff --git a/xen/include/xeno/multiboot.h b/xen/include/xeno/multiboot.h
deleted file mode 100644 (file)
index 4a68f31..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/* multiboot.h - the header for Multiboot */
-/* Copyright (C) 1999, 2001  Free Software Foundation, Inc.
-   
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-#ifndef __MULTIBOOT_H__
-#define __MULTIBOOT_H__
-
-#ifndef __ELF__
-#error "Build on a 32-bit ELF system"
-#endif
-
-/* The magic number passed by a Multiboot-compliant boot loader. */
-#define MULTIBOOT_BOOTLOADER_MAGIC     0x2BADB002
-
-/* The symbol table for a.out.  */
-typedef struct
-{
-  unsigned long tabsize;
-  unsigned long strsize;
-  unsigned long addr;
-  unsigned long reserved;
-} aout_symbol_table_t;
-
-/* The section header table for ELF.  */
-typedef struct
-{
-  unsigned long num;
-  unsigned long size;
-  unsigned long addr;
-  unsigned long shndx;
-} elf_section_header_table_t;
-
-/* The Multiboot information.  */
-typedef struct
-{
-  unsigned long flags;
-  unsigned long mem_lower;
-  unsigned long mem_upper;
-  unsigned long boot_device;
-  unsigned long cmdline;
-  unsigned long mods_count;
-  unsigned long mods_addr;
-  union
-  {
-    aout_symbol_table_t aout_sym;
-    elf_section_header_table_t elf_sec;
-  } u;
-  unsigned long mmap_length;
-  unsigned long mmap_addr;
-} multiboot_info_t;
-
-/* The module structure.  */
-typedef struct
-{
-  unsigned long mod_start;
-  unsigned long mod_end;
-  unsigned long string;
-  unsigned long reserved;
-} module_t;
-
-/* The memory map. Be careful that the offset 0 is base_addr_low
-   but no size.  */
-typedef struct
-{
-  unsigned long size;
-  unsigned long base_addr_low;
-  unsigned long base_addr_high;
-  unsigned long length_low;
-  unsigned long length_high;
-  unsigned long type;
-} memory_map_t;
-
-#endif /* __MULTIBOOT_H__ */
diff --git a/xen/include/xeno/net_headers.h b/xen/include/xeno/net_headers.h
deleted file mode 100644 (file)
index 8f0a222..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * net_headers.h
- *
- * This is a compilation of various network headers, to facilitate
- * access in Xen, which is generally quite simple and doesn't need
- * all the bloat of extra defines and so on.
- *
- * Pretty much everything here is pulled from ip.h, tcp.h, and if_eth.h
- *
- * Reduced, congealed, and otherwise munged by akw. 
- * 
- * Original authors:
- * 
- *    Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> (ip.h, tcp.h, udp.h)
- *
- *    (if_arp.h):
- *    Original taken from Berkeley UNIX 4.3, (c) UCB 1986-1988
- *    Portions taken from the KA9Q/NOS (v2.00m PA0GRI) source.
- *    Ross Biro, <bir7@leland.Stanford.Edu>
- *    Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *    Florian La Roche,
- *    Jonathan Layes <layes@loran.com>
- *    Arnaldo Carvalho de Melo <acme@conectiva.com.br> ARPHRD_HWX25
- *
- * Original legalese:
- *
- *    This program is free software; you can redistribute it and/or
- *    modify it under the terms of the GNU General Public License
- *    as published by the Free Software Foundation; either version
- *    2 of the License, or (at your option) any later version.
- */
-
-#ifndef __NET_HEADERS_H__
-#define __NET_HEADERS_H__
-
-#include <xeno/types.h>
-#include <asm/byteorder.h>
-#include <xeno/if_ether.h> 
-
-/* from ip.h */
-
-struct iphdr {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-    __u8    ihl:4,
-        version:4;
-#elif defined (__BIG_ENDIAN_BITFIELD)
-    __u8    version:4,
-        ihl:4;
-#else
-#error  "Please fix <asm/byteorder.h>"
-#endif
-    __u8    tos;
-    __u16   tot_len;
-    __u16   id;
-    __u16   frag_off;
-    __u8    ttl;
-    __u8    protocol;
-    __u16   check;
-    __u32   saddr;
-    __u32   daddr;
-    /*The options start here. */
-};
-
-/* from tcp.h */
-
-struct tcphdr {
-    __u16   source;
-    __u16   dest;
-    __u32   seq;
-    __u32   ack_seq;
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-    __u16   res1:4,
-        doff:4,
-        fin:1,
-        syn:1,
-        rst:1,
-        psh:1,
-        ack:1,
-        urg:1,
-        ece:1,
-        cwr:1;
-#elif defined(__BIG_ENDIAN_BITFIELD)
-    __u16   doff:4,
-        res1:4,
-        cwr:1,
-        ece:1,
-        urg:1,
-        ack:1,
-        psh:1,
-        rst:1,
-        syn:1,
-        fin:1;
-#else
-#error  "Adjust your <asm/byteorder.h> defines"
-#endif
-    __u16   window;
-    __u16   check;
-    __u16   urg_ptr;
-};
-
-/* From udp.h */
-
-struct udphdr {
-    __u16   source;
-    __u16   dest;
-    __u16   len;
-    __u16   check;
-};
-
-/* from if_arp.h */
-
-struct arphdr
-{
-    __u16   ar_hrd;                      /* format of hardware address    */
-    __u16   ar_pro;                      /* format of protocol address    */
-    __u8    ar_hln;                      /* length of hardware address    */
-    __u8    ar_pln;                      /* length of protocol address    */
-    __u16   ar_op;                       /* ARP opcode (command)          */
-
-    /* This next bit is variable sized, and as coded only allows ETH-IPv4 */
-    __u8    ar_sha[ETH_ALEN];            /* sender hardware address       */
-    __u8    ar_sip[4];                   /* sender IP address             */
-    __u8    ar_tha[ETH_ALEN];            /* target hardware address       */
-    __u8    ar_tip[4];                   /* target IP address             */
-};
-
-
-#endif /* __NET_HEADERS_H__ */
diff --git a/xen/include/xeno/netdevice.h b/xen/include/xeno/netdevice.h
deleted file mode 100644 (file)
index 7b1d3d7..0000000
+++ /dev/null
@@ -1,616 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions for the Interfaces handler.
- *
- * Version:    @(#)dev.h       1.0.10  08/12/93
- *
- * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *             Corey Minyard <wf-rch!minyard@relay.EU.net>
- *             Donald J. Becker, <becker@cesdis.gsfc.nasa.gov>
- *             Alan Cox, <Alan.Cox@linux.org>
- *             Bjorn Ekwall. <bj0rn@blox.se>
- *              Pekka Riikonen <priikone@poseidon.pspt.fi>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- *
- *             Moved to /usr/include/linux for NET3
- */
-#ifndef _LINUX_NETDEVICE_H
-#define _LINUX_NETDEVICE_H
-
-#include <xeno/if.h>
-#include <xeno/if_ether.h>
-#include <xeno/if_packet.h>
-#include <xeno/sched.h>
-#include <xeno/interrupt.h>
-#include <xeno/skbuff.h>
-#include <asm/atomic.h>
-#include <asm/cache.h>
-#include <asm/byteorder.h>
-
-#ifdef __KERNEL__
-#include <xeno/config.h>
-
-struct vlan_group;
-
-extern struct skb_completion_queues {
-    struct sk_buff_head rx;  /* Packets received in interrupt context.   */
-    struct sk_buff     *tx;  /* Tx buffers defunct in interrupt context. */
-} skb_queue[NR_CPUS] __cacheline_aligned;
-
-/* Backlog congestion levels */
-#define NET_RX_SUCCESS         0   /* keep 'em coming, baby */
-#define NET_RX_DROP            1  /* packet dropped */
-
-#endif
-
-#define MAX_ADDR_LEN   8               /* Largest hardware address length */
-
-/*
- *     Network device statistics. Akin to the 2.0 ether stats but
- *     with byte counters.
- */
-struct net_device_stats
-{
-       unsigned long   rx_packets;             /* total packets received       */
-       unsigned long   tx_packets;             /* total packets transmitted    */
-       unsigned long   rx_bytes;               /* total bytes received         */
-       unsigned long   tx_bytes;               /* total bytes transmitted      */
-       unsigned long   rx_errors;              /* bad packets received         */
-       unsigned long   tx_errors;              /* packet transmit problems     */
-       unsigned long   rx_dropped;             /* no space in linux buffers    */
-       unsigned long   tx_dropped;             /* no space available in linux  */
-       unsigned long   multicast;              /* multicast packets received   */
-       unsigned long   collisions;
-
-       /* detailed rx_errors: */
-       unsigned long   rx_length_errors;
-       unsigned long   rx_over_errors;         /* receiver ring buff overflow  */
-       unsigned long   rx_crc_errors;          /* recved pkt with crc error    */
-       unsigned long   rx_frame_errors;        /* recv'd frame alignment error */
-       unsigned long   rx_fifo_errors;         /* recv'r fifo overrun          */
-       unsigned long   rx_missed_errors;       /* receiver missed packet       */
-
-       /* detailed tx_errors */
-       unsigned long   tx_aborted_errors;
-       unsigned long   tx_carrier_errors;
-       unsigned long   tx_fifo_errors;
-       unsigned long   tx_heartbeat_errors;
-       unsigned long   tx_window_errors;
-       
-       /* for cslip etc */
-       unsigned long   rx_compressed;
-       unsigned long   tx_compressed;
-};
-
-
-/* Media selection options. */
-enum {
-        IF_PORT_UNKNOWN = 0,
-        IF_PORT_10BASE2,
-        IF_PORT_10BASET,
-        IF_PORT_AUI,
-        IF_PORT_100BASET,
-        IF_PORT_100BASETX,
-        IF_PORT_100BASEFX
-};
-
-#ifdef __KERNEL__
-
-extern const char *if_port_text[];
-
-#include <xeno/cache.h>
-#include <xeno/skbuff.h>
-
-struct neighbour;
-struct neigh_parms;
-struct sk_buff;
-
-struct netif_rx_stats
-{
-       unsigned total;
-       unsigned dropped;
-       unsigned time_squeeze;
-       unsigned throttled;
-       unsigned fastroute_hit;
-       unsigned fastroute_success;
-       unsigned fastroute_defer;
-       unsigned fastroute_deferred_out;
-       unsigned fastroute_latency_reduction;
-       unsigned cpu_collision;
-} __attribute__ ((__aligned__(SMP_CACHE_BYTES)));
-
-extern struct netif_rx_stats netdev_rx_stat[];
-
-
-/*
- *     We tag multicasts with these structures.
- */
-struct dev_mc_list
-{      
-       struct dev_mc_list      *next;
-       __u8                    dmi_addr[MAX_ADDR_LEN];
-       unsigned char           dmi_addrlen;
-       int                     dmi_users;
-       int                     dmi_gusers;
-};
-
-struct hh_cache
-{
-       struct hh_cache *hh_next;       /* Next entry                        */
-       atomic_t        hh_refcnt;      /* number of users                   */
-       unsigned short  hh_type;        /* protocol identifier, f.e ETH_P_IP
-                                         *  NOTE:  For VLANs, this will be the
-                                         *  encapuslated type. --BLG
-                                         */
-       int             hh_len;         /* length of header */
-       int             (*hh_output)(struct sk_buff *skb);
-       rwlock_t        hh_lock;
-       /* cached hardware header; allow for machine alignment needs.        */
-       unsigned long   hh_data[16/sizeof(unsigned long)];
-};
-
-/* These flag bits are private to the generic network queueing
- * layer, they may not be explicitly referenced by any other
- * code.
- */
-
-enum netdev_state_t
-{
-       __LINK_STATE_XOFF=0,
-       __LINK_STATE_START,
-       __LINK_STATE_PRESENT,
-       __LINK_STATE_NOCARRIER
-};
-
-
-/*
- *     The DEVICE structure.
- *     Actually, this whole structure is a big mistake.  It mixes I/O
- *     data with strictly "high-level" data, and it has to know about
- *     almost every data structure used in the INET module.
- *
- *     FIXME: cleanup struct net_device such that network protocol info
- *     moves out.
- */
-
-struct net_device
-{
-       /*
-        * This is the first field of the "visible" part of this structure
-        * (i.e. as seen by users in the "Space.c" file).  It is the name
-        * the interface.
-        */
-       char                    name[IFNAMSIZ];
-
-       /*
-        *      I/O specific fields
-        *      FIXME: Merge these and struct ifmap into one
-        */
-       unsigned long           rmem_end;       /* shmem "recv" end     */
-       unsigned long           rmem_start;     /* shmem "recv" start   */
-       unsigned long           mem_end;        /* shared mem end       */
-       unsigned long           mem_start;      /* shared mem start     */
-       unsigned long           base_addr;      /* device I/O address   */
-       unsigned int            irq;            /* device IRQ number    */
-
-       /*
-        *      Some hardware also needs these fields, but they are not
-        *      part of the usual set specified in Space.c.
-        */
-
-       unsigned char           if_port;        /* Selectable AUI, TP,..*/
-       unsigned char           dma;            /* DMA channel          */
-
-       unsigned long           state;
-
-       struct net_device       *next;
-       
-       /* The device initialization function. Called only once. */
-       int                     (*init)(struct net_device *dev);
-
-       /* ------- Fields preinitialized in Space.c finish here ------- */
-
-       struct net_device       *next_sched;
-
-       /* Interface index. Unique device identifier    */
-       int                     ifindex;
-       int                     iflink;
-
-
-       struct net_device_stats* (*get_stats)(struct net_device *dev);
-       struct iw_statistics*   (*get_wireless_stats)(struct net_device *dev);
-
-       /*
-        * This marks the end of the "visible" part of the structure. All
-        * fields hereafter are internal to the system, and may change at
-        * will (read: may be cleaned up at will).
-        */
-
-       /* These may be needed for future network-power-down code. */
-       unsigned long           trans_start;    /* Time (in jiffies) of last Tx */
-       unsigned long           last_rx;        /* Time of last Rx      */
-
-       unsigned short          flags;  /* interface flags (a la BSD)   */
-       unsigned short          gflags;
-        unsigned short          priv_flags; /* Like 'flags' but invisible to userspace. */
-        unsigned short          unused_alignment_fixer; /* Because we need priv_flags,
-                                                         * and we want to be 32-bit aligned.
-                                                         */
-
-       unsigned                mtu;    /* interface MTU value          */
-       unsigned short          type;   /* interface hardware type      */
-       unsigned short          hard_header_len;        /* hardware hdr length  */
-       void                    *priv;  /* pointer to private data      */
-
-       struct net_device       *master; /* Pointer to master device of a group,
-                                         * which this device is member of.
-                                         */
-
-       /* Interface address info. */
-       unsigned char           broadcast[MAX_ADDR_LEN];        /* hw bcast add */
-       unsigned char           dev_addr[MAX_ADDR_LEN]; /* hw address   */
-       unsigned char           addr_len;       /* hardware address length      */
-
-       struct dev_mc_list      *mc_list;       /* Multicast mac addresses      */
-       int                     mc_count;       /* Number of installed mcasts   */
-       int                     promiscuity;
-       int                     allmulti;
-
-       int                     watchdog_timeo;
-       struct timer_list       watchdog_timer;
-
-       /* Protocol specific pointers */
-       
-       void                    *atalk_ptr;     /* AppleTalk link       */
-       void                    *ip_ptr;        /* IPv4 specific data   */  
-       void                    *dn_ptr;        /* DECnet specific data */
-       void                    *ip6_ptr;       /* IPv6 specific data */
-       void                    *ec_ptr;        /* Econet specific data */
-
-       /* hard_start_xmit synchronizer */
-       spinlock_t              xmit_lock;
-       /* cpu id of processor entered to hard_start_xmit or -1,
-          if nobody entered there.
-        */
-       int                     xmit_lock_owner;
-       /* device queue lock */
-       spinlock_t              queue_lock;
-       /* Number of references to this device */
-       atomic_t                refcnt;
-       /* The flag marking that device is unregistered, but held by an user */
-       int                     deadbeaf;
-
-       /* Net device features */
-       int                     features;
-#define NETIF_F_SG             1       /* Scatter/gather IO. */
-#define NETIF_F_IP_CSUM                2       /* Can checksum only TCP/UDP over IPv4. */
-#define NETIF_F_NO_CSUM                4       /* Does not require checksum. F.e. loopack. */
-#define NETIF_F_HW_CSUM                8       /* Can checksum all the packets. */
-#define NETIF_F_DYNALLOC       16      /* Self-dectructable device. */
-#define NETIF_F_HIGHDMA                32      /* Can DMA to high memory. */
-#define NETIF_F_FRAGLIST       64      /* Scatter/gather IO. */
-#define NETIF_F_HW_VLAN_TX      128     /* Transmit VLAN hw acceleration */
-#define NETIF_F_HW_VLAN_RX      256     /* Receive VLAN hw acceleration */
-#define NETIF_F_HW_VLAN_FILTER  512     /* Receive filtering on VLAN */
-#define NETIF_F_VLAN_CHALLENGED 1024    /* Device cannot handle VLAN packets */
-
-       /* Called after device is detached from network. */
-       void                    (*uninit)(struct net_device *dev);
-       /* Called after last user reference disappears. */
-       void                    (*destructor)(struct net_device *dev);
-
-       /* Pointers to interface service routines.      */
-       int                     (*open)(struct net_device *dev);
-       int                     (*stop)(struct net_device *dev);
-       int                     (*hard_start_xmit) (struct sk_buff *skb,
-                                                   struct net_device *dev);
-#if 0
-       int                     (*poll) (struct net_device *dev, int *quota); /* XXX IAP */
-#endif
-       int                     (*hard_header) (struct sk_buff *skb,
-                                               struct net_device *dev,
-                                               unsigned short type,
-                                               void *daddr,
-                                               void *saddr,
-                                               unsigned len);
-       int                     (*rebuild_header)(struct sk_buff *skb);
-#define HAVE_MULTICAST                  
-       void                    (*set_multicast_list)(struct net_device *dev);
-#define HAVE_SET_MAC_ADDR               
-       int                     (*set_mac_address)(struct net_device *dev,
-                                                  void *addr);
-#define HAVE_PRIVATE_IOCTL
-       int                     (*do_ioctl)(struct net_device *dev,
-                                           struct ifreq *ifr, int cmd);
-#define HAVE_SET_CONFIG
-       int                     (*set_config)(struct net_device *dev,
-                                             struct ifmap *map);
-#define HAVE_HEADER_CACHE
-       int                     (*hard_header_cache)(struct neighbour *neigh,
-                                                    struct hh_cache *hh);
-       void                    (*header_cache_update)(struct hh_cache *hh,
-                                                      struct net_device *dev,
-                                                      unsigned char *  haddr);
-#define HAVE_CHANGE_MTU
-       int                     (*change_mtu)(struct net_device *dev, int new_mtu);
-
-#define HAVE_TX_TIMEOUT
-       void                    (*tx_timeout) (struct net_device *dev);
-
-        void                    (*vlan_rx_register)(struct net_device *dev,
-                                                    struct vlan_group *grp);
-        void                    (*vlan_rx_add_vid)(struct net_device *dev,
-                                                   unsigned short vid);
-        void                    (*vlan_rx_kill_vid)(struct net_device *dev,
-                                                    unsigned short vid);
-
-       int                     (*hard_header_parse)(struct sk_buff *skb,
-                                                    unsigned char *haddr);
-       int                     (*neigh_setup)(struct net_device *dev, struct neigh_parms *);
-//     int                     (*accept_fastpath)(struct net_device *, struct dst_entry*);
-
-       /* open/release and usage marking */
-       struct module *owner;
-
-       /* bridge stuff */
-       struct net_bridge_port  *br_port;
-};
-
-
-struct packet_type 
-{
-       unsigned short          type;   /* This is really htons(ether_type).    */
-       struct net_device               *dev;   /* NULL is wildcarded here              */
-       int                     (*func) (struct sk_buff *, struct net_device *,
-                                        struct packet_type *);
-       void                    *data;  /* Private to the packet type           */
-       struct packet_type      *next;
-};
-
-
-#include <xeno/interrupt.h>
-
-extern struct net_device               *dev_base;      /* All devices */
-extern rwlock_t                                dev_base_lock;  /* Device list lock */
-
-extern int                     netdev_boot_setup_add(char *name, struct ifmap *map);
-extern int                     netdev_boot_setup_check(struct net_device *dev);
-extern struct net_device    *dev_getbyhwaddr(unsigned short type, char *hwaddr);
-extern void            dev_add_pack(struct packet_type *pt);
-extern void            dev_remove_pack(struct packet_type *pt);
-extern int             dev_get(const char *name);
-extern struct net_device       *dev_get_by_name(const char *name);
-extern struct net_device       *__dev_get_by_name(const char *name);
-extern struct net_device       *dev_alloc(const char *name, int *err);
-extern int             dev_alloc_name(struct net_device *dev, const char *name);
-extern int             dev_open(struct net_device *dev);
-extern int             dev_close(struct net_device *dev);
-extern int             register_netdevice(struct net_device *dev);
-extern int             unregister_netdevice(struct net_device *dev);
-extern void dev_shutdown(struct net_device *dev);
-extern void dev_activate(struct net_device *dev);
-extern void dev_deactivate(struct net_device *dev);
-extern void dev_init_scheduler(struct net_device *dev);
-extern int             dev_new_index(void);
-extern struct net_device       *dev_get_by_index(int ifindex);
-extern struct net_device       *__dev_get_by_index(int ifindex);
-extern int             dev_restart(struct net_device *dev);
-
-typedef int gifconf_func_t(struct net_device * dev, char * bufptr, int len);
-extern int             register_gifconf(unsigned int family, gifconf_func_t * gifconf);
-static inline int unregister_gifconf(unsigned int family)
-{
-       return register_gifconf(family, 0);
-}
-
-extern struct tasklet_struct net_tx_tasklet;
-
-extern struct list_head net_schedule_list;
-extern spinlock_t net_schedule_list_lock;
-
-#define HAVE_NETIF_QUEUE
-
-static inline void __netif_schedule(struct net_device *dev)
-{
-       tasklet_schedule(&net_tx_tasklet);
-}
-
-static inline void netif_schedule(struct net_device *dev)
-{
-       if (!test_bit(__LINK_STATE_XOFF, &dev->state))
-               __netif_schedule(dev);
-}
-
-static inline void netif_start_queue(struct net_device *dev)
-{
-       clear_bit(__LINK_STATE_XOFF, &dev->state);
-}
-
-static inline void netif_wake_queue(struct net_device *dev)
-{
-       if (test_and_clear_bit(__LINK_STATE_XOFF, &dev->state))
-               __netif_schedule(dev);
-}
-
-static inline void netif_stop_queue(struct net_device *dev)
-{
-       set_bit(__LINK_STATE_XOFF, &dev->state);
-}
-
-static inline int netif_queue_stopped(struct net_device *dev)
-{
-       return test_bit(__LINK_STATE_XOFF, &dev->state);
-}
-
-static inline int netif_running(struct net_device *dev)
-{
-       return test_bit(__LINK_STATE_START, &dev->state);
-}
-
-
-/* Use this variant when it is known for sure that it
- * is executing from interrupt context.
- */
-static inline void dev_kfree_skb_irq(struct sk_buff *skb)
-{
-       int cpu = smp_processor_id();
-       unsigned long flags;
-       local_irq_save(flags);
-       skb->next = skb_queue[cpu].tx;
-       skb_queue[cpu].tx = skb;
-       __cpu_raise_softirq(cpu, NET_TX_SOFTIRQ);
-       local_irq_restore(flags);
-}
-
-/* Use this variant in places where it could be invoked
- * either from interrupt or non-interrupt context.
- */
-static inline void dev_kfree_skb_any(struct sk_buff *skb)
-{
-       if (in_irq())
-               dev_kfree_skb_irq(skb);
-       else
-               dev_kfree_skb(skb);
-}
-
-extern void            net_call_rx_atomic(void (*fn)(void));
-extern int             netif_rx(struct sk_buff *skb);
-extern int             dev_ioctl(unsigned int cmd, void *);
-extern int             dev_change_flags(struct net_device *, unsigned);
-extern void            dev_init(void);
-
-extern int netdev_finish_unregister(struct net_device *dev);
-
-static inline void dev_put(struct net_device *dev)
-{
-       if (atomic_dec_and_test(&dev->refcnt))
-               netdev_finish_unregister(dev);
-}
-
-#define __dev_put(dev) atomic_dec(&(dev)->refcnt)
-#define dev_hold(dev) atomic_inc(&(dev)->refcnt)
-
-/* Carrier loss detection, dial on demand. The functions netif_carrier_on
- * and _off may be called from IRQ context, but it is caller
- * who is responsible for serialization of these calls.
- */
-
-static inline int netif_carrier_ok(struct net_device *dev)
-{
-       return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
-}
-
-extern void __netdev_watchdog_up(struct net_device *dev);
-
-static inline void netif_carrier_on(struct net_device *dev)
-{
-       clear_bit(__LINK_STATE_NOCARRIER, &dev->state);
-       if (netif_running(dev))
-               __netdev_watchdog_up(dev);
-}
-
-static inline void netif_carrier_off(struct net_device *dev)
-{
-       set_bit(__LINK_STATE_NOCARRIER, &dev->state);
-}
-
-/* Hot-plugging. */
-static inline int netif_device_present(struct net_device *dev)
-{
-       return test_bit(__LINK_STATE_PRESENT, &dev->state);
-}
-
-static inline void netif_device_detach(struct net_device *dev)
-{
-       if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) &&
-           netif_running(dev)) {
-               netif_stop_queue(dev);
-       }
-}
-
-static inline void netif_device_attach(struct net_device *dev)
-{
-       if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) &&
-           netif_running(dev)) {
-               netif_wake_queue(dev);
-               __netdev_watchdog_up(dev);
-       }
-}
-
-/*
- * Network interface message level settings
- */
-#define HAVE_NETIF_MSG 1
-
-enum {
-       NETIF_MSG_DRV           = 0x0001,
-       NETIF_MSG_PROBE         = 0x0002,
-       NETIF_MSG_LINK          = 0x0004,
-       NETIF_MSG_TIMER         = 0x0008,
-       NETIF_MSG_IFDOWN        = 0x0010,
-       NETIF_MSG_IFUP          = 0x0020,
-       NETIF_MSG_RX_ERR        = 0x0040,
-       NETIF_MSG_TX_ERR        = 0x0080,
-       NETIF_MSG_TX_QUEUED     = 0x0100,
-       NETIF_MSG_INTR          = 0x0200,
-       NETIF_MSG_TX_DONE       = 0x0400,
-       NETIF_MSG_RX_STATUS     = 0x0800,
-       NETIF_MSG_PKTDATA       = 0x1000,
-};
-
-#define netif_msg_drv(p)       ((p)->msg_enable & NETIF_MSG_DRV)
-#define netif_msg_probe(p)     ((p)->msg_enable & NETIF_MSG_PROBE)
-#define netif_msg_link(p)      ((p)->msg_enable & NETIF_MSG_LINK)
-#define netif_msg_timer(p)     ((p)->msg_enable & NETIF_MSG_TIMER)
-#define netif_msg_ifdown(p)    ((p)->msg_enable & NETIF_MSG_IFDOWN)
-#define netif_msg_ifup(p)      ((p)->msg_enable & NETIF_MSG_IFUP)
-#define netif_msg_rx_err(p)    ((p)->msg_enable & NETIF_MSG_RX_ERR)
-#define netif_msg_tx_err(p)    ((p)->msg_enable & NETIF_MSG_TX_ERR)
-#define netif_msg_tx_queued(p) ((p)->msg_enable & NETIF_MSG_TX_QUEUED)
-#define netif_msg_intr(p)      ((p)->msg_enable & NETIF_MSG_INTR)
-#define netif_msg_tx_done(p)   ((p)->msg_enable & NETIF_MSG_TX_DONE)
-#define netif_msg_rx_status(p) ((p)->msg_enable & NETIF_MSG_RX_STATUS)
-#define netif_msg_pktdata(p)   ((p)->msg_enable & NETIF_MSG_PKTDATA)
-
-/* These functions live elsewhere (drivers/net/net_init.c, but related) */
-
-extern void            ether_setup(struct net_device *dev);
-extern void            fddi_setup(struct net_device *dev);
-extern void            tr_setup(struct net_device *dev);
-extern void            fc_setup(struct net_device *dev);
-extern void            fc_freedev(struct net_device *dev);
-/* Support for loadable net-drivers */
-extern int             register_netdev(struct net_device *dev);
-extern void            unregister_netdev(struct net_device *dev);
-/* Functions used for multicast support */
-extern void            dev_mc_upload(struct net_device *dev);
-extern int             dev_mc_delete(struct net_device *dev, void *addr, int alen, int all);
-extern int             dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly);
-extern void            dev_mc_discard(struct net_device *dev);
-extern void            dev_set_promiscuity(struct net_device *dev, int inc);
-extern void            dev_set_allmulti(struct net_device *dev, int inc);
-extern void            netdev_state_change(struct net_device *dev);
-/* Load a device via the kmod */
-extern void            dev_load(const char *name);
-extern void            dev_mcast_init(void);
-extern int             netdev_register_fc(struct net_device *dev, void (*stimul)(struct net_device *dev));
-extern void            netdev_unregister_fc(int bit);
-extern unsigned long   netdev_fc_xoff;
-extern int             netdev_set_master(struct net_device *dev, struct net_device *master);
-extern struct sk_buff * skb_checksum_help(struct sk_buff *skb);
-
-extern void alert_slow_netdevice(struct net_device *dev, char *nictype);
-
-#endif /* __KERNEL__ */
-
-#endif /* _LINUX_DEV_H */
diff --git a/xen/include/xeno/notifier.h b/xen/include/xeno/notifier.h
deleted file mode 100644 (file)
index cedb686..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *     Routines to manage notifier chains for passing status changes to any
- *     interested routines. We need this instead of hard coded call lists so
- *     that modules can poke their nose into the innards. The network devices
- *     needed them so here they are for the rest of you.
- *
- *                             Alan Cox <Alan.Cox@linux.org>
- */
-#ifndef _LINUX_NOTIFIER_H
-#define _LINUX_NOTIFIER_H
-#include <xeno/errno.h>
-
-struct notifier_block
-{
-       int (*notifier_call)(struct notifier_block *self, unsigned long, void *);
-       struct notifier_block *next;
-       int priority;
-};
-
-
-#ifdef __KERNEL__
-
-extern int notifier_chain_register(struct notifier_block **list, struct notifier_block *n);
-extern int notifier_chain_unregister(struct notifier_block **nl, struct notifier_block *n);
-extern int notifier_call_chain(struct notifier_block **n, unsigned long val, void *v);
-
-#define NOTIFY_DONE            0x0000          /* Don't care */
-#define NOTIFY_OK              0x0001          /* Suits me */
-#define NOTIFY_STOP_MASK       0x8000          /* Don't call further */
-#define NOTIFY_BAD             (NOTIFY_STOP_MASK|0x0002)       /* Bad/Veto action      */
-
-/*
- *     Declared notifiers so far. I can imagine quite a few more chains
- *     over time (eg laptop power reset chains, reboot chain (to clean 
- *     device units up), device [un]mount chain, module load/unload chain,
- *     low memory chain, screenblank chain (for plug in modular screenblankers) 
- *     VC switch chains (for loadable kernel svgalib VC switch helpers) etc...
- */
-/* netdevice notifier chain */
-#define NETDEV_UP      0x0001  /* For now you can't veto a device up/down */
-#define NETDEV_DOWN    0x0002
-#define NETDEV_REBOOT  0x0003  /* Tell a protocol stack a network interface
-                                  detected a hardware crash and restarted
-                                  - we can use this eg to kick tcp sessions
-                                  once done */
-#define NETDEV_CHANGE  0x0004  /* Notify device state change */
-#define NETDEV_REGISTER 0x0005
-#define NETDEV_UNREGISTER      0x0006
-#define NETDEV_CHANGEMTU       0x0007
-#define NETDEV_CHANGEADDR      0x0008
-#define NETDEV_GOING_DOWN      0x0009
-#define NETDEV_CHANGENAME      0x000A
-
-#define SYS_DOWN       0x0001  /* Notify of system down */
-#define SYS_RESTART    SYS_DOWN
-#define SYS_HALT       0x0002  /* Notify of system halt */
-#define SYS_POWER_OFF  0x0003  /* Notify of system power off */
-
-#define NETLINK_URELEASE       0x0001  /* Unicast netlink socket released */
-
-#endif /* __KERNEL__ */
-#endif /* _LINUX_NOTIFIER_H */
diff --git a/xen/include/xeno/pci.h b/xen/include/xeno/pci.h
deleted file mode 100644 (file)
index e389b00..0000000
+++ /dev/null
@@ -1,812 +0,0 @@
-/*
- *     $Id: pci.h,v 1.87 1998/10/11 15:13:12 mj Exp $
- *
- *     PCI defines and function prototypes
- *     Copyright 1994, Drew Eckhardt
- *     Copyright 1997--1999 Martin Mares <mj@ucw.cz>
- *
- *     For more information, please consult the following manuals (look at
- *     http://www.pcisig.com/ for how to get them):
- *
- *     PCI BIOS Specification
- *     PCI Local Bus Specification
- *     PCI to PCI Bridge Specification
- *     PCI System Design Guide
- */
-
-#ifndef LINUX_PCI_H
-#define LINUX_PCI_H
-
-/*
- * Under PCI, each device has 256 bytes of configuration address space,
- * of which the first 64 bytes are standardized as follows:
- */
-#define PCI_VENDOR_ID          0x00    /* 16 bits */
-#define PCI_DEVICE_ID          0x02    /* 16 bits */
-#define PCI_COMMAND            0x04    /* 16 bits */
-#define  PCI_COMMAND_IO                0x1     /* Enable response in I/O space */
-#define  PCI_COMMAND_MEMORY    0x2     /* Enable response in Memory space */
-#define  PCI_COMMAND_MASTER    0x4     /* Enable bus mastering */
-#define  PCI_COMMAND_SPECIAL   0x8     /* Enable response to special cycles */
-#define  PCI_COMMAND_INVALIDATE        0x10    /* Use memory write and invalidate */
-#define  PCI_COMMAND_VGA_PALETTE 0x20  /* Enable palette snooping */
-#define  PCI_COMMAND_PARITY    0x40    /* Enable parity checking */
-#define  PCI_COMMAND_WAIT      0x80    /* Enable address/data stepping */
-#define  PCI_COMMAND_SERR      0x100   /* Enable SERR */
-#define  PCI_COMMAND_FAST_BACK 0x200   /* Enable back-to-back writes */
-
-#define PCI_STATUS             0x06    /* 16 bits */
-#define  PCI_STATUS_CAP_LIST   0x10    /* Support Capability List */
-#define  PCI_STATUS_66MHZ      0x20    /* Support 66 Mhz PCI 2.1 bus */
-#define  PCI_STATUS_UDF                0x40    /* Support User Definable Features [obsolete] */
-#define  PCI_STATUS_FAST_BACK  0x80    /* Accept fast-back to back */
-#define  PCI_STATUS_PARITY     0x100   /* Detected parity error */
-#define  PCI_STATUS_DEVSEL_MASK        0x600   /* DEVSEL timing */
-#define  PCI_STATUS_DEVSEL_FAST        0x000   
-#define  PCI_STATUS_DEVSEL_MEDIUM 0x200
-#define  PCI_STATUS_DEVSEL_SLOW 0x400
-#define  PCI_STATUS_SIG_TARGET_ABORT 0x800 /* Set on target abort */
-#define  PCI_STATUS_REC_TARGET_ABORT 0x1000 /* Master ack of " */
-#define  PCI_STATUS_REC_MASTER_ABORT 0x2000 /* Set on master abort */
-#define  PCI_STATUS_SIG_SYSTEM_ERROR 0x4000 /* Set when we drive SERR */
-#define  PCI_STATUS_DETECTED_PARITY 0x8000 /* Set on parity error */
-
-#define PCI_CLASS_REVISION     0x08    /* High 24 bits are class, low 8
-                                          revision */
-#define PCI_REVISION_ID         0x08    /* Revision ID */
-#define PCI_CLASS_PROG          0x09    /* Reg. Level Programming Interface */
-#define PCI_CLASS_DEVICE        0x0a    /* Device class */
-
-#define PCI_CACHE_LINE_SIZE    0x0c    /* 8 bits */
-#define PCI_LATENCY_TIMER      0x0d    /* 8 bits */
-#define PCI_HEADER_TYPE                0x0e    /* 8 bits */
-#define  PCI_HEADER_TYPE_NORMAL        0
-#define  PCI_HEADER_TYPE_BRIDGE 1
-#define  PCI_HEADER_TYPE_CARDBUS 2
-
-#define PCI_BIST               0x0f    /* 8 bits */
-#define  PCI_BIST_CODE_MASK    0x0f    /* Return result */
-#define  PCI_BIST_START                0x40    /* 1 to start BIST, 2 secs or less */
-#define  PCI_BIST_CAPABLE      0x80    /* 1 if BIST capable */
-
-/*
- * Base addresses specify locations in memory or I/O space.
- * Decoded size can be determined by writing a value of 
- * 0xffffffff to the register, and reading it back.  Only 
- * 1 bits are decoded.
- */
-#define PCI_BASE_ADDRESS_0     0x10    /* 32 bits */
-#define PCI_BASE_ADDRESS_1     0x14    /* 32 bits [htype 0,1 only] */
-#define PCI_BASE_ADDRESS_2     0x18    /* 32 bits [htype 0 only] */
-#define PCI_BASE_ADDRESS_3     0x1c    /* 32 bits */
-#define PCI_BASE_ADDRESS_4     0x20    /* 32 bits */
-#define PCI_BASE_ADDRESS_5     0x24    /* 32 bits */
-#define  PCI_BASE_ADDRESS_SPACE        0x01    /* 0 = memory, 1 = I/O */
-#define  PCI_BASE_ADDRESS_SPACE_IO 0x01
-#define  PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
-#define  PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06
-#define  PCI_BASE_ADDRESS_MEM_TYPE_32  0x00    /* 32 bit address */
-#define  PCI_BASE_ADDRESS_MEM_TYPE_1M  0x02    /* Below 1M [obsolete] */
-#define  PCI_BASE_ADDRESS_MEM_TYPE_64  0x04    /* 64 bit address */
-#define  PCI_BASE_ADDRESS_MEM_PREFETCH 0x08    /* prefetchable? */
-#define  PCI_BASE_ADDRESS_MEM_MASK     (~0x0fUL)
-#define  PCI_BASE_ADDRESS_IO_MASK      (~0x03UL)
-/* bit 1 is reserved if address_space = 1 */
-
-/* Header type 0 (normal devices) */
-#define PCI_CARDBUS_CIS                0x28
-#define PCI_SUBSYSTEM_VENDOR_ID        0x2c
-#define PCI_SUBSYSTEM_ID       0x2e  
-#define PCI_ROM_ADDRESS                0x30    /* Bits 31..11 are address, 10..1 reserved */
-#define  PCI_ROM_ADDRESS_ENABLE        0x01
-#define PCI_ROM_ADDRESS_MASK   (~0x7ffUL)
-
-#define PCI_CAPABILITY_LIST    0x34    /* Offset of first capability list entry */
-
-/* 0x35-0x3b are reserved */
-#define PCI_INTERRUPT_LINE     0x3c    /* 8 bits */
-#define PCI_INTERRUPT_PIN      0x3d    /* 8 bits */
-#define PCI_MIN_GNT            0x3e    /* 8 bits */
-#define PCI_MAX_LAT            0x3f    /* 8 bits */
-
-/* Header type 1 (PCI-to-PCI bridges) */
-#define PCI_PRIMARY_BUS                0x18    /* Primary bus number */
-#define PCI_SECONDARY_BUS      0x19    /* Secondary bus number */
-#define PCI_SUBORDINATE_BUS    0x1a    /* Highest bus number behind the bridge */
-#define PCI_SEC_LATENCY_TIMER  0x1b    /* Latency timer for secondary interface */
-#define PCI_IO_BASE            0x1c    /* I/O range behind the bridge */
-#define PCI_IO_LIMIT           0x1d
-#define  PCI_IO_RANGE_TYPE_MASK        0x0fUL  /* I/O bridging type */
-#define  PCI_IO_RANGE_TYPE_16  0x00
-#define  PCI_IO_RANGE_TYPE_32  0x01
-#define  PCI_IO_RANGE_MASK     (~0x0fUL)
-#define PCI_SEC_STATUS         0x1e    /* Secondary status register, only bit 14 used */
-#define PCI_MEMORY_BASE                0x20    /* Memory range behind */
-#define PCI_MEMORY_LIMIT       0x22
-#define  PCI_MEMORY_RANGE_TYPE_MASK 0x0fUL
-#define  PCI_MEMORY_RANGE_MASK (~0x0fUL)
-#define PCI_PREF_MEMORY_BASE   0x24    /* Prefetchable memory range behind */
-#define PCI_PREF_MEMORY_LIMIT  0x26
-#define  PCI_PREF_RANGE_TYPE_MASK 0x0fUL
-#define  PCI_PREF_RANGE_TYPE_32        0x00
-#define  PCI_PREF_RANGE_TYPE_64        0x01
-#define  PCI_PREF_RANGE_MASK   (~0x0fUL)
-#define PCI_PREF_BASE_UPPER32  0x28    /* Upper half of prefetchable memory range */
-#define PCI_PREF_LIMIT_UPPER32 0x2c
-#define PCI_IO_BASE_UPPER16    0x30    /* Upper half of I/O addresses */
-#define PCI_IO_LIMIT_UPPER16   0x32
-/* 0x34 same as for htype 0 */
-/* 0x35-0x3b is reserved */
-#define PCI_ROM_ADDRESS1       0x38    /* Same as PCI_ROM_ADDRESS, but for htype 1 */
-/* 0x3c-0x3d are same as for htype 0 */
-#define PCI_BRIDGE_CONTROL     0x3e
-#define  PCI_BRIDGE_CTL_PARITY 0x01    /* Enable parity detection on secondary interface */
-#define  PCI_BRIDGE_CTL_SERR   0x02    /* The same for SERR forwarding */
-#define  PCI_BRIDGE_CTL_NO_ISA 0x04    /* Disable bridging of ISA ports */
-#define  PCI_BRIDGE_CTL_VGA    0x08    /* Forward VGA addresses */
-#define  PCI_BRIDGE_CTL_MASTER_ABORT 0x20  /* Report master aborts */
-#define  PCI_BRIDGE_CTL_BUS_RESET 0x40 /* Secondary bus reset */
-#define  PCI_BRIDGE_CTL_FAST_BACK 0x80 /* Fast Back2Back enabled on secondary interface */
-
-/* Header type 2 (CardBus bridges) */
-#define PCI_CB_CAPABILITY_LIST 0x14
-/* 0x15 reserved */
-#define PCI_CB_SEC_STATUS      0x16    /* Secondary status */
-#define PCI_CB_PRIMARY_BUS     0x18    /* PCI bus number */
-#define PCI_CB_CARD_BUS                0x19    /* CardBus bus number */
-#define PCI_CB_SUBORDINATE_BUS 0x1a    /* Subordinate bus number */
-#define PCI_CB_LATENCY_TIMER   0x1b    /* CardBus latency timer */
-#define PCI_CB_MEMORY_BASE_0   0x1c
-#define PCI_CB_MEMORY_LIMIT_0  0x20
-#define PCI_CB_MEMORY_BASE_1   0x24
-#define PCI_CB_MEMORY_LIMIT_1  0x28
-#define PCI_CB_IO_BASE_0       0x2c
-#define PCI_CB_IO_BASE_0_HI    0x2e
-#define PCI_CB_IO_LIMIT_0      0x30
-#define PCI_CB_IO_LIMIT_0_HI   0x32
-#define PCI_CB_IO_BASE_1       0x34
-#define PCI_CB_IO_BASE_1_HI    0x36
-#define PCI_CB_IO_LIMIT_1      0x38
-#define PCI_CB_IO_LIMIT_1_HI   0x3a
-#define  PCI_CB_IO_RANGE_MASK  (~0x03UL)
-/* 0x3c-0x3d are same as for htype 0 */
-#define PCI_CB_BRIDGE_CONTROL  0x3e
-#define  PCI_CB_BRIDGE_CTL_PARITY      0x01    /* Similar to standard bridge control register */
-#define  PCI_CB_BRIDGE_CTL_SERR                0x02
-#define  PCI_CB_BRIDGE_CTL_ISA         0x04
-#define  PCI_CB_BRIDGE_CTL_VGA         0x08
-#define  PCI_CB_BRIDGE_CTL_MASTER_ABORT        0x20
-#define  PCI_CB_BRIDGE_CTL_CB_RESET    0x40    /* CardBus reset */
-#define  PCI_CB_BRIDGE_CTL_16BIT_INT   0x80    /* Enable interrupt for 16-bit cards */
-#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100 /* Prefetch enable for both memory regions */
-#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
-#define  PCI_CB_BRIDGE_CTL_POST_WRITES 0x400
-#define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40
-#define PCI_CB_SUBSYSTEM_ID    0x42
-#define PCI_CB_LEGACY_MODE_BASE        0x44    /* 16-bit PC Card legacy mode base address (ExCa) */
-/* 0x48-0x7f reserved */
-
-/* Capability lists */
-
-#define PCI_CAP_LIST_ID                0       /* Capability ID */
-#define  PCI_CAP_ID_PM         0x01    /* Power Management */
-#define  PCI_CAP_ID_AGP                0x02    /* Accelerated Graphics Port */
-#define  PCI_CAP_ID_VPD                0x03    /* Vital Product Data */
-#define  PCI_CAP_ID_SLOTID     0x04    /* Slot Identification */
-#define  PCI_CAP_ID_MSI                0x05    /* Message Signalled Interrupts */
-#define  PCI_CAP_ID_CHSWP      0x06    /* CompactPCI HotSwap */
-#define  PCI_CAP_ID_PCIX       0x07    /* PCI-X */
-#define PCI_CAP_LIST_NEXT      1       /* Next capability in the list */
-#define PCI_CAP_FLAGS          2       /* Capability defined flags (16 bits) */
-#define PCI_CAP_SIZEOF         4
-
-/* Power Management Registers */
-
-#define PCI_PM_PMC              2       /* PM Capabilities Register */
-#define  PCI_PM_CAP_VER_MASK   0x0007  /* Version */
-#define  PCI_PM_CAP_PME_CLOCK  0x0008  /* PME clock required */
-#define  PCI_PM_CAP_RESERVED    0x0010  /* Reserved field */
-#define  PCI_PM_CAP_DSI                0x0020  /* Device specific initialization */
-#define  PCI_PM_CAP_AUX_POWER  0x01C0  /* Auxilliary power support mask */
-#define  PCI_PM_CAP_D1         0x0200  /* D1 power state support */
-#define  PCI_PM_CAP_D2         0x0400  /* D2 power state support */
-#define  PCI_PM_CAP_PME                0x0800  /* PME pin supported */
-#define  PCI_PM_CAP_PME_MASK    0xF800  /* PME Mask of all supported states */
-#define  PCI_PM_CAP_PME_D0      0x0800  /* PME# from D0 */
-#define  PCI_PM_CAP_PME_D1      0x1000  /* PME# from D1 */
-#define  PCI_PM_CAP_PME_D2      0x2000  /* PME# from D2 */
-#define  PCI_PM_CAP_PME_D3      0x4000  /* PME# from D3 (hot) */
-#define  PCI_PM_CAP_PME_D3cold  0x8000  /* PME# from D3 (cold) */
-#define PCI_PM_CTRL            4       /* PM control and status register */
-#define  PCI_PM_CTRL_STATE_MASK        0x0003  /* Current power state (D0 to D3) */
-#define  PCI_PM_CTRL_PME_ENABLE        0x0100  /* PME pin enable */
-#define  PCI_PM_CTRL_DATA_SEL_MASK     0x1e00  /* Data select (??) */
-#define  PCI_PM_CTRL_DATA_SCALE_MASK   0x6000  /* Data scale (??) */
-#define  PCI_PM_CTRL_PME_STATUS        0x8000  /* PME pin status */
-#define PCI_PM_PPB_EXTENSIONS  6       /* PPB support extensions (??) */
-#define  PCI_PM_PPB_B2_B3      0x40    /* Stop clock when in D3hot (??) */
-#define  PCI_PM_BPCC_ENABLE    0x80    /* Bus power/clock control enable (??) */
-#define PCI_PM_DATA_REGISTER   7       /* (??) */
-#define PCI_PM_SIZEOF          8
-
-/* AGP registers */
-
-#define PCI_AGP_VERSION                2       /* BCD version number */
-#define PCI_AGP_RFU            3       /* Rest of capability flags */
-#define PCI_AGP_STATUS         4       /* Status register */
-#define  PCI_AGP_STATUS_RQ_MASK        0xff000000      /* Maximum number of requests - 1 */
-#define  PCI_AGP_STATUS_SBA    0x0200  /* Sideband addressing supported */
-#define  PCI_AGP_STATUS_64BIT  0x0020  /* 64-bit addressing supported */
-#define  PCI_AGP_STATUS_FW     0x0010  /* FW transfers supported */
-#define  PCI_AGP_STATUS_RATE4  0x0004  /* 4x transfer rate supported */
-#define  PCI_AGP_STATUS_RATE2  0x0002  /* 2x transfer rate supported */
-#define  PCI_AGP_STATUS_RATE1  0x0001  /* 1x transfer rate supported */
-#define PCI_AGP_COMMAND                8       /* Control register */
-#define  PCI_AGP_COMMAND_RQ_MASK 0xff000000  /* Master: Maximum number of requests */
-#define  PCI_AGP_COMMAND_SBA   0x0200  /* Sideband addressing enabled */
-#define  PCI_AGP_COMMAND_AGP   0x0100  /* Allow processing of AGP transactions */
-#define  PCI_AGP_COMMAND_64BIT 0x0020  /* Allow processing of 64-bit addresses */
-#define  PCI_AGP_COMMAND_FW    0x0010  /* Force FW transfers */
-#define  PCI_AGP_COMMAND_RATE4 0x0004  /* Use 4x rate */
-#define  PCI_AGP_COMMAND_RATE2 0x0002  /* Use 2x rate */
-#define  PCI_AGP_COMMAND_RATE1 0x0001  /* Use 1x rate */
-#define PCI_AGP_SIZEOF         12
-
-/* Slot Identification */
-
-#define PCI_SID_ESR            2       /* Expansion Slot Register */
-#define  PCI_SID_ESR_NSLOTS    0x1f    /* Number of expansion slots available */
-#define  PCI_SID_ESR_FIC       0x20    /* First In Chassis Flag */
-#define PCI_SID_CHASSIS_NR     3       /* Chassis Number */
-
-/* Message Signalled Interrupts registers */
-
-#define PCI_MSI_FLAGS          2       /* Various flags */
-#define  PCI_MSI_FLAGS_64BIT   0x80    /* 64-bit addresses allowed */
-#define  PCI_MSI_FLAGS_QSIZE   0x70    /* Message queue size configured */
-#define  PCI_MSI_FLAGS_QMASK   0x0e    /* Maximum queue size available */
-#define  PCI_MSI_FLAGS_ENABLE  0x01    /* MSI feature enabled */
-#define PCI_MSI_RFU            3       /* Rest of capability flags */
-#define PCI_MSI_ADDRESS_LO     4       /* Lower 32 bits */
-#define PCI_MSI_ADDRESS_HI     8       /* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */
-#define PCI_MSI_DATA_32                8       /* 16 bits of data for 32-bit devices */
-#define PCI_MSI_DATA_64                12      /* 16 bits of data for 64-bit devices */
-
-/* CompactPCI Hotswap Register */
-
-#define PCI_CHSWP_CSR          2       /* Control and Status Register */
-#define  PCI_CHSWP_DHA         0x01    /* Device Hiding Arm */
-#define  PCI_CHSWP_EIM         0x02    /* ENUM# Signal Mask */
-#define  PCI_CHSWP_PIE         0x04    /* Pending Insert or Extract */
-#define  PCI_CHSWP_LOO         0x08    /* LED On / Off */
-#define  PCI_CHSWP_PI          0x30    /* Programming Interface */
-#define  PCI_CHSWP_EXT         0x40    /* ENUM# status - extraction */
-#define  PCI_CHSWP_INS         0x80    /* ENUM# status - insertion */
-
-/* PCI-X registers */
-
-#define PCI_X_CMD              2       /* Modes & Features */
-#define  PCI_X_CMD_DPERR_E     0x0001  /* Data Parity Error Recovery Enable */
-#define  PCI_X_CMD_ERO         0x0002  /* Enable Relaxed Ordering */
-#define  PCI_X_CMD_MAX_READ    0x000c  /* Max Memory Read Byte Count */
-#define  PCI_X_CMD_MAX_SPLIT   0x0070  /* Max Outstanding Split Transactions */
-#define PCI_X_DEVFN            4       /* A copy of devfn. */
-#define PCI_X_BUSNR            5       /* Bus segment number */
-#define PCI_X_STATUS           6       /* PCI-X capabilities */
-#define  PCI_X_STATUS_64BIT    0x0001  /* 64-bit device */
-#define  PCI_X_STATUS_133MHZ   0x0002  /* 133 MHz capable */
-#define  PCI_X_STATUS_SPL_DISC 0x0004  /* Split Completion Discarded */
-#define  PCI_X_STATUS_UNX_SPL  0x0008  /* Unexpected Split Completion */
-#define  PCI_X_STATUS_COMPLEX  0x0010  /* Device Complexity */
-#define  PCI_X_STATUS_MAX_READ 0x0060  /* Designed Maximum Memory Read Count */
-#define  PCI_X_STATUS_MAX_SPLIT        0x0380  /* Design Max Outstanding Split Trans */
-#define  PCI_X_STATUS_MAX_CUM  0x1c00  /* Designed Max Cumulative Read Size */
-#define  PCI_X_STATUS_SPL_ERR  0x2000  /* Rcvd Split Completion Error Msg */
-
-/* Include the ID list */
-
-#include <xeno/pci_ids.h>
-
-/*
- * The PCI interface treats multi-function devices as independent
- * devices.  The slot/function address of each device is encoded
- * in a single byte as follows:
- *
- *     7:3 = slot
- *     2:0 = function
- */
-#define PCI_DEVFN(slot,func)   ((((slot) & 0x1f) << 3) | ((func) & 0x07))
-#define PCI_SLOT(devfn)                (((devfn) >> 3) & 0x1f)
-#define PCI_FUNC(devfn)                ((devfn) & 0x07)
-
-/* Ioctls for /proc/bus/pci/X/Y nodes. */
-#define PCIIOC_BASE            ('P' << 24 | 'C' << 16 | 'I' << 8)
-#define PCIIOC_CONTROLLER      (PCIIOC_BASE | 0x00)    /* Get controller for PCI device. */
-#define PCIIOC_MMAP_IS_IO      (PCIIOC_BASE | 0x01)    /* Set mmap state to I/O space. */
-#define PCIIOC_MMAP_IS_MEM     (PCIIOC_BASE | 0x02)    /* Set mmap state to MEM space. */
-#define PCIIOC_WRITE_COMBINE   (PCIIOC_BASE | 0x03)    /* Enable/disable write-combining. */
-
-#ifdef __KERNEL__
-
-#include <xeno/types.h>
-#include <xeno/config.h>
-#include <xeno/ioport.h>
-#include <xeno/list.h>
-#include <xeno/errno.h>
-
-/* File state for mmap()s on /proc/bus/pci/X/Y */
-enum pci_mmap_state {
-       pci_mmap_io,
-       pci_mmap_mem
-};
-
-/* This defines the direction arg to the DMA mapping routines. */
-#define PCI_DMA_BIDIRECTIONAL  0
-#define PCI_DMA_TODEVICE       1
-#define PCI_DMA_FROMDEVICE     2
-#define PCI_DMA_NONE           3
-
-#define DEVICE_COUNT_COMPATIBLE        4
-#define DEVICE_COUNT_IRQ       2
-#define DEVICE_COUNT_DMA       2
-#define DEVICE_COUNT_RESOURCE  12
-
-#define PCI_ANY_ID (~0)
-
-#define pci_present pcibios_present
-
-
-#define pci_for_each_dev_reverse(dev) \
-       for(dev = pci_dev_g(pci_devices.prev); dev != pci_dev_g(&pci_devices); dev = pci_dev_g(dev->global_list.prev))
-
-#define pci_for_each_bus(bus) \
-for(bus = pci_bus_b(pci_root_buses.next); bus != pci_bus_b(&pci_root_buses); bus = pci_bus_b(bus->node.next))
-
-/*
- * The pci_dev structure is used to describe both PCI and ISAPnP devices.
- */
-struct pci_dev {
-       struct list_head global_list;   /* node in list of all PCI devices */
-       struct list_head bus_list;      /* node in per-bus list */
-       struct pci_bus  *bus;           /* bus this device is on */
-       struct pci_bus  *subordinate;   /* bus this device bridges to */
-
-       void            *sysdata;       /* hook for sys-specific extension */
-       struct proc_dir_entry *procent; /* device entry in /proc/bus/pci */
-
-       unsigned int    devfn;          /* encoded device & function index */
-       unsigned short  vendor;
-       unsigned short  device;
-       unsigned short  subsystem_vendor;
-       unsigned short  subsystem_device;
-       unsigned int    class;          /* 3 bytes: (base,sub,prog-if) */
-       u8              hdr_type;       /* PCI header type (`multi' flag masked out) */
-       u8              rom_base_reg;   /* which config register controls the ROM */
-
-       struct pci_driver *driver;      /* which driver has allocated this device */
-       void            *driver_data;   /* data private to the driver */
-       u64             dma_mask;       /* Mask of the bits of bus address this
-                                          device implements.  Normally this is
-                                          0xffffffff.  You only need to change
-                                          this if your device has broken DMA
-                                          or supports 64-bit transfers.  */
-
-       u32             current_state;  /* Current operating state. In ACPI-speak,
-                                          this is D0-D3, D0 being fully functional,
-                                          and D3 being off. */
-
-       /* device is compatible with these IDs */
-       unsigned short vendor_compatible[DEVICE_COUNT_COMPATIBLE];
-       unsigned short device_compatible[DEVICE_COUNT_COMPATIBLE];
-
-       /*
-        * Instead of touching interrupt line and base address registers
-        * directly, use the values stored here. They might be different!
-        */
-       unsigned int    irq;
-       struct resource resource[DEVICE_COUNT_RESOURCE]; /* I/O and memory regions + expansion ROMs */
-       struct resource dma_resource[DEVICE_COUNT_DMA];
-       struct resource irq_resource[DEVICE_COUNT_IRQ];
-
-       char            name[90];       /* device name */
-       char            slot_name[8];   /* slot name */
-       int             active;         /* ISAPnP: device is active */
-       int             ro;             /* ISAPnP: read only */
-       unsigned short  regs;           /* ISAPnP: supported registers */
-
-       /* These fields are used by common fixups */
-       unsigned short  transparent:1;  /* Transparent PCI bridge */
-
-       int (*prepare)(struct pci_dev *dev);    /* ISAPnP hooks */
-       int (*activate)(struct pci_dev *dev);
-       int (*deactivate)(struct pci_dev *dev);
-};
-
-#define pci_dev_g(n) list_entry(n, struct pci_dev, global_list)
-#define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list)
-
-/*
- *  For PCI devices, the region numbers are assigned this way:
- *
- *     0-5     standard PCI regions
- *     6       expansion ROM
- *     7-10    bridges: address space assigned to buses behind the bridge
- */
-
-#define PCI_ROM_RESOURCE 6
-#define PCI_BRIDGE_RESOURCES 7
-#define PCI_NUM_RESOURCES 11
-  
-#define PCI_REGION_FLAG_MASK 0x0fU     /* These bits of resource flags tell us the PCI region flags */
-
-struct pci_bus {
-       struct list_head node;          /* node in list of buses */
-       struct pci_bus  *parent;        /* parent bus this bridge is on */
-       struct list_head children;      /* list of child buses */
-       struct list_head devices;       /* list of devices on this bus */
-       struct pci_dev  *self;          /* bridge device as seen by parent */
-       struct resource *resource[4];   /* address space routed to this bus */
-
-       struct pci_ops  *ops;           /* configuration access functions */
-       void            *sysdata;       /* hook for sys-specific extension */
-       struct proc_dir_entry *procdir; /* directory entry in /proc/bus/pci */
-
-       unsigned char   number;         /* bus number */
-       unsigned char   primary;        /* number of primary bridge */
-       unsigned char   secondary;      /* number of secondary bridge */
-       unsigned char   subordinate;    /* max number of subordinate buses */
-
-       char            name[48];
-       unsigned short  vendor;
-       unsigned short  device;
-       unsigned int    serial;         /* serial number */
-       unsigned char   pnpver;         /* Plug & Play version */
-       unsigned char   productver;     /* product version */
-       unsigned char   checksum;       /* if zero - checksum passed */
-       unsigned char   pad1;
-};
-
-#define pci_bus_b(n) list_entry(n, struct pci_bus, node)
-
-extern struct list_head pci_root_buses;        /* list of all known PCI buses */
-extern struct list_head pci_devices;   /* list of all devices */
-
-extern struct proc_dir_entry *proc_bus_pci_dir;
-/*
- * Error values that may be returned by PCI functions.
- */
-#define PCIBIOS_SUCCESSFUL             0x00
-#define PCIBIOS_FUNC_NOT_SUPPORTED     0x81
-#define PCIBIOS_BAD_VENDOR_ID          0x83
-#define PCIBIOS_DEVICE_NOT_FOUND       0x86
-#define PCIBIOS_BAD_REGISTER_NUMBER    0x87
-#define PCIBIOS_SET_FAILED             0x88
-#define PCIBIOS_BUFFER_TOO_SMALL       0x89
-
-/* Low-level architecture-dependent routines */
-
-struct pci_ops {
-       int (*read_byte)(struct pci_dev *, int where, u8 *val);
-       int (*read_word)(struct pci_dev *, int where, u16 *val);
-       int (*read_dword)(struct pci_dev *, int where, u32 *val);
-       int (*write_byte)(struct pci_dev *, int where, u8 val);
-       int (*write_word)(struct pci_dev *, int where, u16 val);
-       int (*write_dword)(struct pci_dev *, int where, u32 val);
-};
-
-struct pbus_set_ranges_data
-{
-       unsigned long io_start, io_end;
-       unsigned long mem_start, mem_end;
-       unsigned long prefetch_start, prefetch_end;
-};
-
-struct pci_device_id {
-       unsigned int vendor, device;            /* Vendor and device ID or PCI_ANY_ID */
-       unsigned int subvendor, subdevice;      /* Subsystem ID's or PCI_ANY_ID */
-       unsigned int class, class_mask;         /* (class,subclass,prog-if) triplet */
-       unsigned long driver_data;              /* Data private to the driver */
-};
-
-struct pci_driver {
-       struct list_head node;
-       char *name;
-       const struct pci_device_id *id_table;   /* NULL if wants all devices */
-       int  (*probe)  (struct pci_dev *dev, const struct pci_device_id *id);   /* New device inserted */
-       void (*remove) (struct pci_dev *dev);   /* Device removed (NULL if not a hot-plug capable driver) */
-       int  (*save_state) (struct pci_dev *dev, u32 state);    /* Save Device Context */
-       int  (*suspend) (struct pci_dev *dev, u32 state);       /* Device suspended */
-       int  (*resume) (struct pci_dev *dev);                   /* Device woken up */
-       int  (*enable_wake) (struct pci_dev *dev, u32 state, int enable);   /* Enable wake event */
-};
-
-
-/* these external functions are only available when PCI support is enabled */
-#ifdef CONFIG_PCI
-
-#define pci_for_each_dev(dev) \
-       for(dev = pci_dev_g(pci_devices.next); dev != pci_dev_g(&pci_devices); dev = pci_dev_g(dev->global_list.next))
-
-void pcibios_init(void);
-void pcibios_fixup_bus(struct pci_bus *);
-int pcibios_enable_device(struct pci_dev *, int mask);
-char *pcibios_setup (char *str);
-
-/* Used only when drivers/pci/setup.c is used */
-void pcibios_align_resource(void *, struct resource *,
-                           unsigned long, unsigned long);
-void pcibios_update_resource(struct pci_dev *, struct resource *,
-                            struct resource *, int);
-void pcibios_update_irq(struct pci_dev *, int irq);
-void pcibios_fixup_pbus_ranges(struct pci_bus *, struct pbus_set_ranges_data *);
-
-/* Backward compatibility, don't use in new code! */
-
-int pcibios_present(void);
-int pcibios_read_config_byte (unsigned char bus, unsigned char dev_fn,
-                             unsigned char where, unsigned char *val);
-int pcibios_read_config_word (unsigned char bus, unsigned char dev_fn,
-                             unsigned char where, unsigned short *val);
-int pcibios_read_config_dword (unsigned char bus, unsigned char dev_fn,
-                              unsigned char where, unsigned int *val);
-int pcibios_write_config_byte (unsigned char bus, unsigned char dev_fn,
-                              unsigned char where, unsigned char val);
-int pcibios_write_config_word (unsigned char bus, unsigned char dev_fn,
-                              unsigned char where, unsigned short val);
-int pcibios_write_config_dword (unsigned char bus, unsigned char dev_fn,
-                               unsigned char where, unsigned int val);
-int pcibios_find_class (unsigned int class_code, unsigned short index, unsigned char *bus, unsigned char *dev_fn);
-int pcibios_find_device (unsigned short vendor, unsigned short dev_id,
-                        unsigned short index, unsigned char *bus,
-                        unsigned char *dev_fn);
-
-/* Generic PCI functions used internally */
-
-void pci_init(void);
-int pci_bus_exists(const struct list_head *list, int nr);
-struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
-struct pci_bus *pci_alloc_primary_bus(int bus);
-struct pci_dev *pci_scan_slot(struct pci_dev *temp);
-int pci_proc_attach_device(struct pci_dev *dev);
-int pci_proc_detach_device(struct pci_dev *dev);
-int pci_proc_attach_bus(struct pci_bus *bus);
-int pci_proc_detach_bus(struct pci_bus *bus);
-void pci_name_device(struct pci_dev *dev);
-char *pci_class_name(u32 class);
-void pci_read_bridge_bases(struct pci_bus *child);
-struct resource *pci_find_parent_resource(const struct pci_dev *dev, struct resource *res);
-int pci_setup_device(struct pci_dev *dev);
-int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);
-
-/* Generic PCI functions exported to card drivers */
-
-struct pci_dev *pci_find_device (unsigned int vendor, unsigned int device, const struct pci_dev *from);
-struct pci_dev *pci_find_subsys (unsigned int vendor, unsigned int device,
-                                unsigned int ss_vendor, unsigned int ss_device,
-                                const struct pci_dev *from);
-struct pci_dev *pci_find_class (unsigned int class, const struct pci_dev *from);
-struct pci_dev *pci_find_slot (unsigned int bus, unsigned int devfn);
-int pci_find_capability (struct pci_dev *dev, int cap);
-
-int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val);
-int pci_read_config_word(struct pci_dev *dev, int where, u16 *val);
-int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val);
-int pci_write_config_byte(struct pci_dev *dev, int where, u8 val);
-int pci_write_config_word(struct pci_dev *dev, int where, u16 val);
-int pci_write_config_dword(struct pci_dev *dev, int where, u32 val);
-
-int pci_enable_device(struct pci_dev *dev);
-int pci_enable_device_bars(struct pci_dev *dev, int mask);
-void pci_disable_device(struct pci_dev *dev);
-void pci_set_master(struct pci_dev *dev);
-#define HAVE_PCI_SET_MWI
-int pci_set_mwi(struct pci_dev *dev);
-void pci_clear_mwi(struct pci_dev *dev);
-int pdev_set_mwi(struct pci_dev *dev);
-int pci_set_dma_mask(struct pci_dev *dev, u64 mask);
-int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask);
-int pci_assign_resource(struct pci_dev *dev, int i);
-
-/* Power management related routines */
-int pci_save_state(struct pci_dev *dev, u32 *buffer);
-int pci_restore_state(struct pci_dev *dev, u32 *buffer);
-int pci_set_power_state(struct pci_dev *dev, int state);
-int pci_enable_wake(struct pci_dev *dev, u32 state, int enable);
-
-/* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */
-
-int pci_claim_resource(struct pci_dev *, int);
-void pci_assign_unassigned_resources(void);
-void pdev_enable_device(struct pci_dev *);
-void pdev_sort_resources(struct pci_dev *, struct resource_list *);
-unsigned long pci_bridge_check_io(struct pci_dev *);
-void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
-                   int (*)(struct pci_dev *, u8, u8));
-#define HAVE_PCI_REQ_REGIONS   2
-int pci_request_regions(struct pci_dev *, char *);
-void pci_release_regions(struct pci_dev *);
-int pci_request_region(struct pci_dev *, int, char *);
-void pci_release_region(struct pci_dev *, int);
-
-/* New-style probing supporting hot-pluggable devices */
-int pci_register_driver(struct pci_driver *);
-void pci_unregister_driver(struct pci_driver *);
-void pci_insert_device(struct pci_dev *, struct pci_bus *);
-void pci_remove_device(struct pci_dev *);
-struct pci_driver *pci_dev_driver(const struct pci_dev *);
-const struct pci_device_id *pci_match_device(const struct pci_device_id *ids, const struct pci_dev *dev);
-void pci_announce_device_to_drivers(struct pci_dev *);
-unsigned int pci_do_scan_bus(struct pci_bus *bus);
-struct pci_bus * pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr);
-
-#if 0
-/* kmem_cache style wrapper around pci_alloc_consistent() */
-struct pci_pool *pci_pool_create (const char *name, struct pci_dev *dev,
-               size_t size, size_t align, size_t allocation, int flags);
-void pci_pool_destroy (struct pci_pool *pool);
-
-void *pci_pool_alloc (struct pci_pool *pool, int flags, dma_addr_t *handle);
-void pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t addr);
-#endif
-
-#endif /* CONFIG_PCI */
-
-/* Include architecture-dependent settings and functions */
-
-#include <asm/pci.h>
-
-/*
- *  If the system does not have PCI, clearly these return errors.  Define
- *  these as simple inline functions to avoid hair in drivers.
- */
-
-#ifndef CONFIG_PCI
-static inline int pcibios_present(void) { return 0; }
-static inline int pcibios_find_class (unsigned int class_code, unsigned short index, unsigned char *bus, unsigned char *dev_fn) 
-{      return PCIBIOS_DEVICE_NOT_FOUND; }
-
-#define _PCI_NOP(o,s,t) \
-       static inline int pcibios_##o##_config_##s (u8 bus, u8 dfn, u8 where, t val) \
-               { return PCIBIOS_FUNC_NOT_SUPPORTED; } \
-       static inline int pci_##o##_config_##s (struct pci_dev *dev, int where, t val) \
-               { return PCIBIOS_FUNC_NOT_SUPPORTED; }
-#define _PCI_NOP_ALL(o,x)      _PCI_NOP(o,byte,u8 x) \
-                               _PCI_NOP(o,word,u16 x) \
-                               _PCI_NOP(o,dword,u32 x)
-_PCI_NOP_ALL(read, *)
-_PCI_NOP_ALL(write,)
-
-static inline struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device, const struct pci_dev *from)
-{ return NULL; }
-
-static inline struct pci_dev *pci_find_class(unsigned int class, const struct pci_dev *from)
-{ return NULL; }
-
-static inline struct pci_dev *pci_find_slot(unsigned int bus, unsigned int devfn)
-{ return NULL; }
-
-static inline struct pci_dev *pci_find_subsys(unsigned int vendor, unsigned int device,
-unsigned int ss_vendor, unsigned int ss_device, const struct pci_dev *from)
-{ return NULL; }
-
-static inline void pci_set_master(struct pci_dev *dev) { }
-static inline int pci_enable_device_bars(struct pci_dev *dev, int mask) { return -EBUSY; }
-static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
-static inline void pci_disable_device(struct pci_dev *dev) { }
-static inline int pci_module_init(struct pci_driver *drv) { return -ENODEV; }
-static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; }
-static inline int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; }
-static inline int pci_assign_resource(struct pci_dev *dev, int i) { return -EBUSY;}
-static inline int pci_register_driver(struct pci_driver *drv) { return 0;}
-static inline void pci_unregister_driver(struct pci_driver *drv) { }
-static inline int scsi_to_pci_dma_dir(unsigned char scsi_dir) { return scsi_dir; }
-static inline int pci_find_capability (struct pci_dev *dev, int cap) {return 0; }
-static inline const struct pci_device_id *pci_match_device(const struct pci_device_id *ids, const struct pci_dev *dev) { return NULL; }
-
-/* Power management related routines */
-static inline int pci_save_state(struct pci_dev *dev, u32 *buffer) { return 0; }
-static inline int pci_restore_state(struct pci_dev *dev, u32 *buffer) { return 0; }
-static inline int pci_set_power_state(struct pci_dev *dev, int state) { return 0; }
-static inline int pci_enable_wake(struct pci_dev *dev, u32 state, int enable) { return 0; }
-
-#define pci_for_each_dev(dev) \
-       for(dev = NULL; 0; )
-
-#else
-
-/*
- * a helper function which helps ensure correct pci_driver
- * setup and cleanup for commonly-encountered hotplug/modular cases
- *
- * This MUST stay in a header, as it checks for -DMODULE
- */
-static inline int pci_module_init(struct pci_driver *drv)
-{
-       int rc = pci_register_driver (drv);
-
-       if (rc > 0)
-               return 0;
-
-       /* iff CONFIG_HOTPLUG and built into kernel, we should
-        * leave the driver around for future hotplug events.
-        * For the module case, a hotplug daemon of some sort
-        * should load a module in response to an insert event. */
-#if defined(CONFIG_HOTPLUG) && !defined(MODULE)
-       if (rc == 0)
-               return 0;
-#else
-       if (rc == 0)
-               rc = -ENODEV;           
-#endif
-
-       /* if we get here, we need to clean up pci driver instance
-        * and return some sort of error */
-       pci_unregister_driver (drv);
-       
-       return rc;
-}
-
-#endif /* !CONFIG_PCI */
-
-/* these helpers provide future and backwards compatibility
- * for accessing popular PCI BAR info */
-#define pci_resource_start(dev,bar)   ((dev)->resource[(bar)].start)
-#define pci_resource_end(dev,bar)     ((dev)->resource[(bar)].end)
-#define pci_resource_flags(dev,bar)   ((dev)->resource[(bar)].flags)
-#define pci_resource_len(dev,bar) \
-       ((pci_resource_start((dev),(bar)) == 0 &&       \
-         pci_resource_end((dev),(bar)) ==              \
-         pci_resource_start((dev),(bar))) ? 0 :        \
-                                                       \
-        (pci_resource_end((dev),(bar)) -               \
-         pci_resource_start((dev),(bar)) + 1))
-
-/* Similar to the helpers above, these manipulate per-pci_dev
- * driver-specific data.  Currently stored as pci_dev::driver_data,
- * a void pointer, but it is not present on older kernels.
- */
-static inline void *pci_get_drvdata (struct pci_dev *pdev)
-{
-       return pdev->driver_data;
-}
-
-static inline void pci_set_drvdata (struct pci_dev *pdev, void *data)
-{
-       pdev->driver_data = data;
-}
-
-static inline char *pci_name(struct pci_dev *pdev)
-{
-        return pdev->slot_name;
-}
-
-/*
- *  The world is not perfect and supplies us with broken PCI devices.
- *  For at least a part of these bugs we need a work-around, so both
- *  generic (drivers/pci/quirks.c) and per-architecture code can define
- *  fixup hooks to be called for particular buggy devices.
- */
-
-struct pci_fixup {
-       int pass;
-       u16 vendor, device;                     /* You can use PCI_ANY_ID here of course */
-       void (*hook)(struct pci_dev *dev);
-};
-
-extern struct pci_fixup pcibios_fixups[];
-
-#define PCI_FIXUP_HEADER       1               /* Called immediately after reading configuration header */
-#define PCI_FIXUP_FINAL                2               /* Final phase of device fixups */
-
-void pci_fixup_device(int pass, struct pci_dev *dev);
-
-extern int pci_pci_problems;
-#define PCIPCI_FAIL            1
-#define PCIPCI_TRITON          2
-#define PCIPCI_NATOMA          4
-#define PCIPCI_VIAETBF         8
-#define PCIPCI_VSFX            16
-#define PCIPCI_ALIMAGIK                32
-
-#endif /* __KERNEL__ */
-#endif /* LINUX_PCI_H */
diff --git a/xen/include/xeno/pci_ids.h b/xen/include/xeno/pci_ids.h
deleted file mode 100644 (file)
index d29b709..0000000
+++ /dev/null
@@ -1,1987 +0,0 @@
-/*
- *     PCI Class, Vendor and Device IDs
- *
- *     Please keep sorted.
- */
-
-/* Device classes and subclasses */
-
-#define PCI_CLASS_NOT_DEFINED          0x0000
-#define PCI_CLASS_NOT_DEFINED_VGA      0x0001
-
-#define PCI_BASE_CLASS_STORAGE         0x01
-#define PCI_CLASS_STORAGE_SCSI         0x0100
-#define PCI_CLASS_STORAGE_IDE          0x0101
-#define PCI_CLASS_STORAGE_FLOPPY       0x0102
-#define PCI_CLASS_STORAGE_IPI          0x0103
-#define PCI_CLASS_STORAGE_RAID         0x0104
-#define PCI_CLASS_STORAGE_OTHER                0x0180
-
-#define PCI_BASE_CLASS_NETWORK         0x02
-#define PCI_CLASS_NETWORK_ETHERNET     0x0200
-#define PCI_CLASS_NETWORK_TOKEN_RING   0x0201
-#define PCI_CLASS_NETWORK_FDDI         0x0202
-#define PCI_CLASS_NETWORK_ATM          0x0203
-#define PCI_CLASS_NETWORK_OTHER                0x0280
-
-#define PCI_BASE_CLASS_DISPLAY         0x03
-#define PCI_CLASS_DISPLAY_VGA          0x0300
-#define PCI_CLASS_DISPLAY_XGA          0x0301
-#define PCI_CLASS_DISPLAY_3D           0x0302
-#define PCI_CLASS_DISPLAY_OTHER                0x0380
-
-#define PCI_BASE_CLASS_MULTIMEDIA      0x04
-#define PCI_CLASS_MULTIMEDIA_VIDEO     0x0400
-#define PCI_CLASS_MULTIMEDIA_AUDIO     0x0401
-#define PCI_CLASS_MULTIMEDIA_PHONE     0x0402
-#define PCI_CLASS_MULTIMEDIA_OTHER     0x0480
-
-#define PCI_BASE_CLASS_MEMORY          0x05
-#define PCI_CLASS_MEMORY_RAM           0x0500
-#define PCI_CLASS_MEMORY_FLASH         0x0501
-#define PCI_CLASS_MEMORY_OTHER         0x0580
-
-#define PCI_BASE_CLASS_BRIDGE          0x06
-#define PCI_CLASS_BRIDGE_HOST          0x0600
-#define PCI_CLASS_BRIDGE_ISA           0x0601
-#define PCI_CLASS_BRIDGE_EISA          0x0602
-#define PCI_CLASS_BRIDGE_MC            0x0603
-#define PCI_CLASS_BRIDGE_PCI           0x0604
-#define PCI_CLASS_BRIDGE_PCMCIA                0x0605
-#define PCI_CLASS_BRIDGE_NUBUS         0x0606
-#define PCI_CLASS_BRIDGE_CARDBUS       0x0607
-#define PCI_CLASS_BRIDGE_RACEWAY       0x0608
-#define PCI_CLASS_BRIDGE_OTHER         0x0680
-
-#define PCI_BASE_CLASS_COMMUNICATION   0x07
-#define PCI_CLASS_COMMUNICATION_SERIAL 0x0700
-#define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701
-#define PCI_CLASS_COMMUNICATION_MULTISERIAL 0x0702
-#define PCI_CLASS_COMMUNICATION_MODEM  0x0703
-#define PCI_CLASS_COMMUNICATION_OTHER  0x0780
-
-#define PCI_BASE_CLASS_SYSTEM          0x08
-#define PCI_CLASS_SYSTEM_PIC           0x0800
-#define PCI_CLASS_SYSTEM_DMA           0x0801
-#define PCI_CLASS_SYSTEM_TIMER         0x0802
-#define PCI_CLASS_SYSTEM_RTC           0x0803
-#define PCI_CLASS_SYSTEM_PCI_HOTPLUG   0x0804
-#define PCI_CLASS_SYSTEM_OTHER         0x0880
-
-#define PCI_BASE_CLASS_INPUT           0x09
-#define PCI_CLASS_INPUT_KEYBOARD       0x0900
-#define PCI_CLASS_INPUT_PEN            0x0901
-#define PCI_CLASS_INPUT_MOUSE          0x0902
-#define PCI_CLASS_INPUT_SCANNER                0x0903
-#define PCI_CLASS_INPUT_GAMEPORT       0x0904
-#define PCI_CLASS_INPUT_OTHER          0x0980
-
-#define PCI_BASE_CLASS_DOCKING         0x0a
-#define PCI_CLASS_DOCKING_GENERIC      0x0a00
-#define PCI_CLASS_DOCKING_OTHER                0x0a80
-
-#define PCI_BASE_CLASS_PROCESSOR       0x0b
-#define PCI_CLASS_PROCESSOR_386                0x0b00
-#define PCI_CLASS_PROCESSOR_486                0x0b01
-#define PCI_CLASS_PROCESSOR_PENTIUM    0x0b02
-#define PCI_CLASS_PROCESSOR_ALPHA      0x0b10
-#define PCI_CLASS_PROCESSOR_POWERPC    0x0b20
-#define PCI_CLASS_PROCESSOR_MIPS       0x0b30
-#define PCI_CLASS_PROCESSOR_CO         0x0b40
-
-#define PCI_BASE_CLASS_SERIAL          0x0c
-#define PCI_CLASS_SERIAL_FIREWIRE      0x0c00
-#define PCI_CLASS_SERIAL_ACCESS                0x0c01
-#define PCI_CLASS_SERIAL_SSA           0x0c02
-#define PCI_CLASS_SERIAL_USB           0x0c03
-#define PCI_CLASS_SERIAL_FIBER         0x0c04
-#define PCI_CLASS_SERIAL_SMBUS         0x0c05
-
-#define PCI_BASE_CLASS_INTELLIGENT     0x0e
-#define PCI_CLASS_INTELLIGENT_I2O      0x0e00
-
-#define PCI_BASE_CLASS_SATELLITE       0x0f
-#define PCI_CLASS_SATELLITE_TV         0x0f00
-#define PCI_CLASS_SATELLITE_AUDIO      0x0f01
-#define PCI_CLASS_SATELLITE_VOICE      0x0f03
-#define PCI_CLASS_SATELLITE_DATA       0x0f04
-
-#define PCI_BASE_CLASS_CRYPT           0x10
-#define PCI_CLASS_CRYPT_NETWORK                0x1000
-#define PCI_CLASS_CRYPT_ENTERTAINMENT  0x1001
-#define PCI_CLASS_CRYPT_OTHER          0x1080
-
-#define PCI_BASE_CLASS_SIGNAL_PROCESSING 0x11
-#define PCI_CLASS_SP_DPIO              0x1100
-#define PCI_CLASS_SP_OTHER             0x1180
-
-#define PCI_CLASS_OTHERS               0xff
-
-/* Vendors and devices.  Sort key: vendor first, device next. */
-
-#define PCI_VENDOR_ID_DYNALINK         0x0675
-#define PCI_DEVICE_ID_DYNALINK_IS64PH  0x1702
-
-#define PCI_VENDOR_ID_BERKOM                   0x0871
-#define PCI_DEVICE_ID_BERKOM_A1T               0xffa1
-#define PCI_DEVICE_ID_BERKOM_T_CONCEPT         0xffa2
-#define PCI_DEVICE_ID_BERKOM_A4T               0xffa4
-#define PCI_DEVICE_ID_BERKOM_SCITEL_QUADRO     0xffa8
-
-#define PCI_VENDOR_ID_COMPAQ           0x0e11
-#define PCI_DEVICE_ID_COMPAQ_TOKENRING 0x0508
-#define PCI_DEVICE_ID_COMPAQ_1280      0x3033
-#define PCI_DEVICE_ID_COMPAQ_TRIFLEX   0x4000
-#define PCI_DEVICE_ID_COMPAQ_6010      0x6010
-#define PCI_DEVICE_ID_COMPAQ_TACHYON   0xa0fc
-#define PCI_DEVICE_ID_COMPAQ_SMART2P   0xae10
-#define PCI_DEVICE_ID_COMPAQ_NETEL100  0xae32
-#define PCI_DEVICE_ID_COMPAQ_TRIFLEX_IDE 0xae33
-#define PCI_DEVICE_ID_COMPAQ_NETEL10   0xae34
-#define PCI_DEVICE_ID_COMPAQ_NETFLEX3I 0xae35
-#define PCI_DEVICE_ID_COMPAQ_NETEL100D 0xae40
-#define PCI_DEVICE_ID_COMPAQ_NETEL100PI        0xae43
-#define PCI_DEVICE_ID_COMPAQ_NETEL100I 0xb011
-#define PCI_DEVICE_ID_COMPAQ_CISS      0xb060
-#define PCI_DEVICE_ID_COMPAQ_CISSB     0xb178
-#define PCI_DEVICE_ID_COMPAQ_CISSC     0x0046
-#define PCI_DEVICE_ID_COMPAQ_THUNDER   0xf130
-#define PCI_DEVICE_ID_COMPAQ_NETFLEX3B 0xf150
-
-#define PCI_VENDOR_ID_NCR              0x1000
-#define PCI_VENDOR_ID_LSI_LOGIC                0x1000
-#define PCI_DEVICE_ID_NCR_53C810       0x0001
-#define PCI_DEVICE_ID_NCR_53C820       0x0002
-#define PCI_DEVICE_ID_NCR_53C825       0x0003
-#define PCI_DEVICE_ID_NCR_53C815       0x0004
-#define PCI_DEVICE_ID_LSI_53C810AP     0x0005
-#define PCI_DEVICE_ID_NCR_53C860       0x0006
-#define PCI_DEVICE_ID_LSI_53C1510      0x000a
-#define PCI_DEVICE_ID_NCR_53C896       0x000b
-#define PCI_DEVICE_ID_NCR_53C895       0x000c
-#define PCI_DEVICE_ID_NCR_53C885       0x000d
-#define PCI_DEVICE_ID_NCR_53C875       0x000f
-#define PCI_DEVICE_ID_NCR_53C1510      0x0010
-#define PCI_DEVICE_ID_LSI_53C895A      0x0012
-#define PCI_DEVICE_ID_LSI_53C875A      0x0013
-#define PCI_DEVICE_ID_LSI_53C1010_33   0x0020
-#define PCI_DEVICE_ID_LSI_53C1010_66   0x0021
-#define PCI_DEVICE_ID_LSI_53C1030      0x0030
-#define PCI_DEVICE_ID_LSI_53C1035      0x0040
-#define PCI_DEVICE_ID_NCR_53C875J      0x008f
-#define PCI_DEVICE_ID_LSI_FC909                0x0621
-#define PCI_DEVICE_ID_LSI_FC929                0x0622
-#define PCI_DEVICE_ID_LSI_FC929_LAN    0x0623
-#define PCI_DEVICE_ID_LSI_FC919                0x0624
-#define PCI_DEVICE_ID_LSI_FC919_LAN    0x0625
-#define PCI_DEVICE_ID_LSI_FC929X       0x0626
-#define PCI_DEVICE_ID_LSI_FC919X       0x0628
-#define PCI_DEVICE_ID_NCR_YELLOWFIN    0x0701
-#define PCI_DEVICE_ID_LSI_61C102       0x0901
-#define PCI_DEVICE_ID_LSI_63C815       0x1000
-
-#define PCI_VENDOR_ID_ATI              0x1002
-/* Mach64 */
-#define PCI_DEVICE_ID_ATI_68800                0x4158
-#define PCI_DEVICE_ID_ATI_215CT222     0x4354
-#define PCI_DEVICE_ID_ATI_210888CX     0x4358
-#define PCI_DEVICE_ID_ATI_215ET222     0x4554
-/* Mach64 / Rage */
-#define PCI_DEVICE_ID_ATI_215GB                0x4742
-#define PCI_DEVICE_ID_ATI_215GD                0x4744
-#define PCI_DEVICE_ID_ATI_215GI                0x4749
-#define PCI_DEVICE_ID_ATI_215GP                0x4750
-#define PCI_DEVICE_ID_ATI_215GQ                0x4751
-#define PCI_DEVICE_ID_ATI_215XL                0x4752
-#define PCI_DEVICE_ID_ATI_215GT                0x4754
-#define PCI_DEVICE_ID_ATI_215GTB       0x4755
-#define PCI_DEVICE_ID_ATI_215_IV       0x4756
-#define PCI_DEVICE_ID_ATI_215_IW       0x4757
-#define PCI_DEVICE_ID_ATI_215_IZ       0x475A
-#define PCI_DEVICE_ID_ATI_210888GX     0x4758
-#define PCI_DEVICE_ID_ATI_215_LB       0x4c42
-#define PCI_DEVICE_ID_ATI_215_LD       0x4c44
-#define PCI_DEVICE_ID_ATI_215_LG       0x4c47
-#define PCI_DEVICE_ID_ATI_215_LI       0x4c49
-#define PCI_DEVICE_ID_ATI_215_LM       0x4c4D
-#define PCI_DEVICE_ID_ATI_215_LN       0x4c4E
-#define PCI_DEVICE_ID_ATI_215_LR       0x4c52
-#define PCI_DEVICE_ID_ATI_215_LS       0x4c53
-#define PCI_DEVICE_ID_ATI_264_LT       0x4c54
-/* Mach64 VT */
-#define PCI_DEVICE_ID_ATI_264VT                0x5654
-#define PCI_DEVICE_ID_ATI_264VU                0x5655
-#define PCI_DEVICE_ID_ATI_264VV                0x5656
-/* Rage128 Pro GL */
-#define PCI_DEVICE_ID_ATI_Rage128_PA   0x5041
-#define PCI_DEVICE_ID_ATI_Rage128_PB   0x5042
-#define PCI_DEVICE_ID_ATI_Rage128_PC   0x5043
-#define PCI_DEVICE_ID_ATI_Rage128_PD   0x5044
-#define PCI_DEVICE_ID_ATI_Rage128_PE   0x5045
-#define PCI_DEVICE_ID_ATI_RAGE128_PF   0x5046
-/* Rage128 Pro VR */
-#define PCI_DEVICE_ID_ATI_RAGE128_PG   0x5047
-#define PCI_DEVICE_ID_ATI_RAGE128_PH   0x5048
-#define PCI_DEVICE_ID_ATI_RAGE128_PI   0x5049
-#define PCI_DEVICE_ID_ATI_RAGE128_PJ   0x504A
-#define PCI_DEVICE_ID_ATI_RAGE128_PK   0x504B
-#define PCI_DEVICE_ID_ATI_RAGE128_PL   0x504C
-#define PCI_DEVICE_ID_ATI_RAGE128_PM   0x504D
-#define PCI_DEVICE_ID_ATI_RAGE128_PN   0x504E
-#define PCI_DEVICE_ID_ATI_RAGE128_PO   0x504F
-#define PCI_DEVICE_ID_ATI_RAGE128_PP   0x5050
-#define PCI_DEVICE_ID_ATI_RAGE128_PQ   0x5051
-#define PCI_DEVICE_ID_ATI_RAGE128_PR   0x5052
-#define PCI_DEVICE_ID_ATI_RAGE128_TR   0x5452
-#define PCI_DEVICE_ID_ATI_RAGE128_PS   0x5053
-#define PCI_DEVICE_ID_ATI_RAGE128_PT   0x5054
-#define PCI_DEVICE_ID_ATI_RAGE128_PU   0x5055
-#define PCI_DEVICE_ID_ATI_RAGE128_PV   0x5056
-#define PCI_DEVICE_ID_ATI_RAGE128_PW   0x5057
-#define PCI_DEVICE_ID_ATI_RAGE128_PX   0x5058
-/* Rage128 GL */
-#define PCI_DEVICE_ID_ATI_RAGE128_RE   0x5245
-#define PCI_DEVICE_ID_ATI_RAGE128_RF   0x5246
-#define PCI_DEVICE_ID_ATI_RAGE128_RG   0x534b
-#define PCI_DEVICE_ID_ATI_RAGE128_RH   0x534c
-#define PCI_DEVICE_ID_ATI_RAGE128_RI   0x534d
-/* Rage128 VR */
-#define PCI_DEVICE_ID_ATI_RAGE128_RK   0x524b
-#define PCI_DEVICE_ID_ATI_RAGE128_RL   0x524c
-#define PCI_DEVICE_ID_ATI_RAGE128_RM   0x5345
-#define PCI_DEVICE_ID_ATI_RAGE128_RN   0x5346
-#define PCI_DEVICE_ID_ATI_RAGE128_RO   0x5347
-/* Rage128 M3 */
-#define PCI_DEVICE_ID_ATI_RAGE128_LE   0x4c45
-#define PCI_DEVICE_ID_ATI_RAGE128_LF   0x4c46
-/* Rage128 Pro Ultra */
-#define PCI_DEVICE_ID_ATI_RAGE128_U1   0x5446
-#define PCI_DEVICE_ID_ATI_RAGE128_U2   0x544C
-#define PCI_DEVICE_ID_ATI_RAGE128_U3   0x5452
-/* Rage M4 */
-#define PCI_DEVICE_ID_ATI_RADEON_LE    0x4d45
-#define PCI_DEVICE_ID_ATI_RADEON_LF    0x4d46
-/* Radeon R100 */
-#define PCI_DEVICE_ID_ATI_RADEON_QD    0x5144
-#define PCI_DEVICE_ID_ATI_RADEON_QE    0x5145
-#define PCI_DEVICE_ID_ATI_RADEON_QF    0x5146
-#define PCI_DEVICE_ID_ATI_RADEON_QG    0x5147
-/* Radeon RV100 (VE) */
-#define PCI_DEVICE_ID_ATI_RADEON_QY    0x5159
-#define PCI_DEVICE_ID_ATI_RADEON_QZ    0x515a
-/* Radeon R200 (8500) */
-#define PCI_DEVICE_ID_ATI_RADEON_QL    0x514c
-#define PCI_DEVICE_ID_ATI_RADEON_QN    0x514e
-#define PCI_DEVICE_ID_ATI_RADEON_QO    0x514f
-#define PCI_DEVICE_ID_ATI_RADEON_Ql    0x516c
-#define PCI_DEVICE_ID_ATI_RADEON_BB    0x4242
-/* Radeon R200 (9100) */
-#define PCI_DEVICE_ID_ATI_RADEON_QM    0x514d
-/* Radeon RV200 (7500) */
-#define PCI_DEVICE_ID_ATI_RADEON_QW    0x5157
-#define PCI_DEVICE_ID_ATI_RADEON_QX    0x5158
-/* Radeon RV250 (9000) */
-#define PCI_DEVICE_ID_ATI_RADEON_Id    0x4964
-#define PCI_DEVICE_ID_ATI_RADEON_Ie    0x4965
-#define PCI_DEVICE_ID_ATI_RADEON_If    0x4966
-#define PCI_DEVICE_ID_ATI_RADEON_Ig    0x4967
-/* Radeon RV280 (9200) */
-#define PCI_DEVICE_ID_ATI_RADEON_Y_    0x5960
-/* Radeon R300 (9700) */
-#define PCI_DEVICE_ID_ATI_RADEON_ND    0x4e44
-#define PCI_DEVICE_ID_ATI_RADEON_NE    0x4e45
-#define PCI_DEVICE_ID_ATI_RADEON_NF    0x4e46
-#define PCI_DEVICE_ID_ATI_RADEON_NG    0x4e47
-#define PCI_DEVICE_ID_ATI_RADEON_AE    0x4145
-#define PCI_DEVICE_ID_ATI_RADEON_AF    0x4146
-/* Radeon R300 (9500) */
-#define PCI_DEVICE_ID_ATI_RADEON_AD    0x4144
-/* Radeon R350 (9800) */
-#define PCI_DEVICE_ID_ATI_RADEON_NH    0x4e48
-#define PCI_DEVICE_ID_ATI_RADEON_NI    0x4e49
-/* Radeon RV350 (9600) */
-#define PCI_DEVICE_ID_ATI_RADEON_AP    0x4150
-#define PCI_DEVICE_ID_ATI_RADEON_AR    0x4152
-/* Radeon M6 */
-#define PCI_DEVICE_ID_ATI_RADEON_LY    0x4c59
-#define PCI_DEVICE_ID_ATI_RADEON_LZ    0x4c5a
-/* Radeon M7 */
-#define PCI_DEVICE_ID_ATI_RADEON_LW    0x4c57
-#define PCI_DEVICE_ID_ATI_RADEON_LX    0x4c58
-/* Radeon M9 */
-#define PCI_DEVICE_ID_ATI_RADEON_Ld    0x4c64
-#define PCI_DEVICE_ID_ATI_RADEON_Le    0x4c65
-#define PCI_DEVICE_ID_ATI_RADEON_Lf    0x4c66
-#define PCI_DEVICE_ID_ATI_RADEON_Lg    0x4c67
-/* RadeonIGP */
-#define PCI_DEVICE_ID_ATI_RADEON_IGP   0xCAB0
-
-#define PCI_VENDOR_ID_VLSI             0x1004
-#define PCI_DEVICE_ID_VLSI_82C592      0x0005
-#define PCI_DEVICE_ID_VLSI_82C593      0x0006
-#define PCI_DEVICE_ID_VLSI_82C594      0x0007
-#define PCI_DEVICE_ID_VLSI_82C597      0x0009
-#define PCI_DEVICE_ID_VLSI_82C541      0x000c
-#define PCI_DEVICE_ID_VLSI_82C543      0x000d
-#define PCI_DEVICE_ID_VLSI_82C532      0x0101
-#define PCI_DEVICE_ID_VLSI_82C534      0x0102
-#define PCI_DEVICE_ID_VLSI_82C535      0x0104
-#define PCI_DEVICE_ID_VLSI_82C147      0x0105
-#define PCI_DEVICE_ID_VLSI_VAS96011    0x0702
-
-#define PCI_VENDOR_ID_ADL              0x1005
-#define PCI_DEVICE_ID_ADL_2301         0x2301
-
-#define PCI_VENDOR_ID_NS               0x100b
-#define PCI_DEVICE_ID_NS_87415         0x0002
-#define PCI_DEVICE_ID_NS_87560_LIO     0x000e
-#define PCI_DEVICE_ID_NS_87560_USB     0x0012
-#define PCI_DEVICE_ID_NS_83815         0x0020
-#define PCI_DEVICE_ID_NS_83820         0x0022
-#define PCI_DEVICE_ID_NS_SCx200_BRIDGE 0x0500
-#define PCI_DEVICE_ID_NS_SCx200_SMI    0x0501
-#define PCI_DEVICE_ID_NS_SCx200_IDE    0x0502
-#define PCI_DEVICE_ID_NS_SCx200_AUDIO  0x0503
-#define PCI_DEVICE_ID_NS_SCx200_VIDEO  0x0504
-#define PCI_DEVICE_ID_NS_SCx200_XBUS   0x0505
-#define PCI_DEVICE_ID_NS_87410         0xd001
-
-#define PCI_VENDOR_ID_TSENG            0x100c
-#define PCI_DEVICE_ID_TSENG_W32P_2     0x3202
-#define PCI_DEVICE_ID_TSENG_W32P_b     0x3205
-#define PCI_DEVICE_ID_TSENG_W32P_c     0x3206
-#define PCI_DEVICE_ID_TSENG_W32P_d     0x3207
-#define PCI_DEVICE_ID_TSENG_ET6000     0x3208
-
-#define PCI_VENDOR_ID_WEITEK           0x100e
-#define PCI_DEVICE_ID_WEITEK_P9000     0x9001
-#define PCI_DEVICE_ID_WEITEK_P9100     0x9100
-
-#define PCI_VENDOR_ID_DEC              0x1011
-#define PCI_DEVICE_ID_DEC_BRD          0x0001
-#define PCI_DEVICE_ID_DEC_TULIP                0x0002
-#define PCI_DEVICE_ID_DEC_TGA          0x0004
-#define PCI_DEVICE_ID_DEC_TULIP_FAST   0x0009
-#define PCI_DEVICE_ID_DEC_TGA2         0x000D
-#define PCI_DEVICE_ID_DEC_FDDI         0x000F
-#define PCI_DEVICE_ID_DEC_TULIP_PLUS   0x0014
-#define PCI_DEVICE_ID_DEC_21142                0x0019
-#define PCI_DEVICE_ID_DEC_21052                0x0021
-#define PCI_DEVICE_ID_DEC_21150                0x0022
-#define PCI_DEVICE_ID_DEC_21152                0x0024
-#define PCI_DEVICE_ID_DEC_21153                0x0025
-#define PCI_DEVICE_ID_DEC_21154                0x0026
-#define PCI_DEVICE_ID_DEC_21285                0x1065
-#define PCI_DEVICE_ID_COMPAQ_42XX      0x0046
-
-#define PCI_VENDOR_ID_CIRRUS           0x1013
-#define PCI_DEVICE_ID_CIRRUS_7548      0x0038
-#define PCI_DEVICE_ID_CIRRUS_5430      0x00a0
-#define PCI_DEVICE_ID_CIRRUS_5434_4    0x00a4
-#define PCI_DEVICE_ID_CIRRUS_5434_8    0x00a8
-#define PCI_DEVICE_ID_CIRRUS_5436      0x00ac
-#define PCI_DEVICE_ID_CIRRUS_5446      0x00b8
-#define PCI_DEVICE_ID_CIRRUS_5480      0x00bc
-#define PCI_DEVICE_ID_CIRRUS_5462      0x00d0
-#define PCI_DEVICE_ID_CIRRUS_5464      0x00d4
-#define PCI_DEVICE_ID_CIRRUS_5465      0x00d6
-#define PCI_DEVICE_ID_CIRRUS_6729      0x1100
-#define PCI_DEVICE_ID_CIRRUS_6832      0x1110
-#define PCI_DEVICE_ID_CIRRUS_7542      0x1200
-#define PCI_DEVICE_ID_CIRRUS_7543      0x1202
-#define PCI_DEVICE_ID_CIRRUS_7541      0x1204
-
-#define PCI_VENDOR_ID_IBM              0x1014
-#define PCI_DEVICE_ID_IBM_FIRE_CORAL   0x000a
-#define PCI_DEVICE_ID_IBM_TR           0x0018
-#define PCI_DEVICE_ID_IBM_82G2675      0x001d
-#define PCI_DEVICE_ID_IBM_MCA          0x0020
-#define PCI_DEVICE_ID_IBM_82351                0x0022
-#define PCI_DEVICE_ID_IBM_PYTHON       0x002d
-#define PCI_DEVICE_ID_IBM_SERVERAID    0x002e
-#define PCI_DEVICE_ID_IBM_TR_WAKE      0x003e
-#define PCI_DEVICE_ID_IBM_MPIC         0x0046
-#define PCI_DEVICE_ID_IBM_3780IDSP     0x007d
-#define PCI_DEVICE_ID_IBM_CHUKAR       0x0096
-#define PCI_DEVICE_ID_IBM_CPC710_PCI64 0x00fc
-#define PCI_DEVICE_ID_IBM_CPC710_PCI32 0x0105
-#define        PCI_DEVICE_ID_IBM_405GP         0x0156
-#define PCI_DEVICE_ID_IBM_SERVERAIDI960        0x01bd
-#define PCI_DEVICE_ID_IBM_MPIC_2       0xffff
-
-#define PCI_VENDOR_ID_COMPEX2          0x101a // pci.ids says "AT&T GIS (NCR)"
-#define PCI_DEVICE_ID_COMPEX2_100VG    0x0005
-
-#define PCI_VENDOR_ID_WD               0x101c
-#define PCI_DEVICE_ID_WD_7197          0x3296
-#define PCI_DEVICE_ID_WD_90C           0xc24a
-
-#define PCI_VENDOR_ID_AMI              0x101e
-#define PCI_DEVICE_ID_AMI_MEGARAID3    0x1960
-#define PCI_DEVICE_ID_AMI_MEGARAID     0x9010
-#define PCI_DEVICE_ID_AMI_MEGARAID2    0x9060
-
-#define PCI_VENDOR_ID_AMD              0x1022
-#define PCI_DEVICE_ID_AMD_LANCE                0x2000
-#define PCI_DEVICE_ID_AMD_LANCE_HOME   0x2001
-#define PCI_DEVICE_ID_AMD_SCSI         0x2020
-#define PCI_DEVICE_ID_AMD_FE_GATE_7006 0x7006
-#define PCI_DEVICE_ID_AMD_FE_GATE_7007 0x7007
-#define PCI_DEVICE_ID_AMD_FE_GATE_700C 0x700C
-#define PCI_DEVICE_ID_AMD_FE_GATE_700D 0x700D
-#define PCI_DEVICE_ID_AMD_FE_GATE_700E 0x700E
-#define PCI_DEVICE_ID_AMD_FE_GATE_700F 0x700F
-#define PCI_DEVICE_ID_AMD_COBRA_7400   0x7400
-#define PCI_DEVICE_ID_AMD_COBRA_7401   0x7401
-#define PCI_DEVICE_ID_AMD_COBRA_7403   0x7403
-#define PCI_DEVICE_ID_AMD_COBRA_7404   0x7404
-#define PCI_DEVICE_ID_AMD_VIPER_7408   0x7408
-#define PCI_DEVICE_ID_AMD_VIPER_7409   0x7409
-#define PCI_DEVICE_ID_AMD_VIPER_740B   0x740B
-#define PCI_DEVICE_ID_AMD_VIPER_740C   0x740C
-#define PCI_DEVICE_ID_AMD_VIPER_7410   0x7410
-#define PCI_DEVICE_ID_AMD_VIPER_7411   0x7411
-#define PCI_DEVICE_ID_AMD_VIPER_7413   0x7413
-#define PCI_DEVICE_ID_AMD_VIPER_7414   0x7414
-#define PCI_DEVICE_ID_AMD_OPUS_7440    0x7440
-#      define PCI_DEVICE_ID_AMD_VIPER_7440     PCI_DEVICE_ID_AMD_OPUS_7440
-#define PCI_DEVICE_ID_AMD_OPUS_7441    0x7441
-#      define PCI_DEVICE_ID_AMD_VIPER_7441     PCI_DEVICE_ID_AMD_OPUS_7441
-#define PCI_DEVICE_ID_AMD_OPUS_7443    0x7443
-#      define PCI_DEVICE_ID_AMD_VIPER_7443     PCI_DEVICE_ID_AMD_OPUS_7443
-#define PCI_DEVICE_ID_AMD_OPUS_7448    0x7448
-# define       PCI_DEVICE_ID_AMD_VIPER_7448    PCI_DEVICE_ID_AMD_OPUS_7448
-#define PCI_DEVICE_ID_AMD_OPUS_7449    0x7449
-#      define PCI_DEVICE_ID_AMD_VIPER_7449     PCI_DEVICE_ID_AMD_OPUS_7449
-#define PCI_DEVICE_ID_AMD_8111_LAN     0x7462
-#define PCI_DEVICE_ID_AMD_8111_IDE     0x7469
-#define PCI_DEVICE_ID_AMD_8111_AC97    0x746d
-#define PCI_DEVICE_ID_AMD_8131_APIC     0x7450
-
-#define PCI_VENDOR_ID_TRIDENT          0x1023
-#define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX        0x2000
-#define PCI_DEVICE_ID_TRIDENT_4DWAVE_NX        0x2001
-#define PCI_DEVICE_ID_TRIDENT_9320     0x9320
-#define PCI_DEVICE_ID_TRIDENT_9388     0x9388
-#define PCI_DEVICE_ID_TRIDENT_9397     0x9397
-#define PCI_DEVICE_ID_TRIDENT_939A     0x939A
-#define PCI_DEVICE_ID_TRIDENT_9520     0x9520
-#define PCI_DEVICE_ID_TRIDENT_9525     0x9525
-#define PCI_DEVICE_ID_TRIDENT_9420     0x9420
-#define PCI_DEVICE_ID_TRIDENT_9440     0x9440
-#define PCI_DEVICE_ID_TRIDENT_9660     0x9660
-#define PCI_DEVICE_ID_TRIDENT_9750     0x9750
-#define PCI_DEVICE_ID_TRIDENT_9850     0x9850
-#define PCI_DEVICE_ID_TRIDENT_9880     0x9880
-#define PCI_DEVICE_ID_TRIDENT_8400     0x8400
-#define PCI_DEVICE_ID_TRIDENT_8420     0x8420
-#define PCI_DEVICE_ID_TRIDENT_8500     0x8500
-
-#define PCI_VENDOR_ID_AI               0x1025
-#define PCI_DEVICE_ID_AI_M1435         0x1435
-
-#define PCI_VENDOR_ID_DELL              0x1028
-
-#define PCI_VENDOR_ID_MATROX           0x102B
-#define PCI_DEVICE_ID_MATROX_MGA_2     0x0518
-#define PCI_DEVICE_ID_MATROX_MIL       0x0519
-#define PCI_DEVICE_ID_MATROX_MYS       0x051A
-#define PCI_DEVICE_ID_MATROX_MIL_2     0x051b
-#define PCI_DEVICE_ID_MATROX_MIL_2_AGP 0x051f
-#define PCI_DEVICE_ID_MATROX_MGA_IMP   0x0d10
-#define PCI_DEVICE_ID_MATROX_G100_MM   0x1000
-#define PCI_DEVICE_ID_MATROX_G100_AGP  0x1001
-#define PCI_DEVICE_ID_MATROX_G200_PCI  0x0520
-#define PCI_DEVICE_ID_MATROX_G200_AGP  0x0521
-#define        PCI_DEVICE_ID_MATROX_G400       0x0525
-#define PCI_DEVICE_ID_MATROX_G550      0x2527
-#define PCI_DEVICE_ID_MATROX_VIA       0x4536
-
-#define PCI_VENDOR_ID_CT               0x102c
-#define PCI_DEVICE_ID_CT_65545         0x00d8
-#define PCI_DEVICE_ID_CT_65548         0x00dc
-#define PCI_DEVICE_ID_CT_65550         0x00e0
-#define PCI_DEVICE_ID_CT_65554         0x00e4
-#define PCI_DEVICE_ID_CT_65555         0x00e5
-
-#define PCI_VENDOR_ID_MIRO             0x1031
-#define PCI_DEVICE_ID_MIRO_36050       0x5601
-
-#define PCI_VENDOR_ID_NEC              0x1033
-#define PCI_DEVICE_ID_NEC_PCX2         0x0046
-#define PCI_DEVICE_ID_NEC_NILE4                0x005a
-#define PCI_DEVICE_ID_NEC_VRC5476       0x009b
-#define PCI_DEVICE_ID_NEC_VRC5477_AC97  0x00a6
-
-#define PCI_VENDOR_ID_FD               0x1036
-#define PCI_DEVICE_ID_FD_36C70         0x0000
-
-#define PCI_VENDOR_ID_SI               0x1039
-#define PCI_DEVICE_ID_SI_5591_AGP      0x0001
-#define PCI_DEVICE_ID_SI_6202          0x0002
-#define PCI_DEVICE_ID_SI_503           0x0008
-#define PCI_DEVICE_ID_SI_ACPI          0x0009
-#define PCI_DEVICE_ID_SI_5597_VGA      0x0200
-#define PCI_DEVICE_ID_SI_6205          0x0205
-#define PCI_DEVICE_ID_SI_501           0x0406
-#define PCI_DEVICE_ID_SI_496           0x0496
-#define PCI_DEVICE_ID_SI_300           0x0300
-#define PCI_DEVICE_ID_SI_315H          0x0310
-#define PCI_DEVICE_ID_SI_315           0x0315
-#define PCI_DEVICE_ID_SI_315PRO                0x0325
-#define PCI_DEVICE_ID_SI_530           0x0530
-#define PCI_DEVICE_ID_SI_540           0x0540
-#define PCI_DEVICE_ID_SI_550           0x0550
-#define PCI_DEVICE_ID_SI_540_VGA       0x5300
-#define PCI_DEVICE_ID_SI_550_VGA       0x5315
-#define PCI_DEVICE_ID_SI_601           0x0601
-#define PCI_DEVICE_ID_SI_620           0x0620
-#define PCI_DEVICE_ID_SI_630           0x0630
-#define PCI_DEVICE_ID_SI_633           0x0633
-#define PCI_DEVICE_ID_SI_635           0x0635
-#define PCI_DEVICE_ID_SI_640           0x0640
-#define PCI_DEVICE_ID_SI_645           0x0645
-#define PCI_DEVICE_ID_SI_646           0x0646
-#define PCI_DEVICE_ID_SI_648           0x0648
-#define PCI_DEVICE_ID_SI_650           0x0650
-#define PCI_DEVICE_ID_SI_651           0x0651
-#define PCI_DEVICE_ID_SI_652           0x0652
-#define PCI_DEVICE_ID_SI_655           0x0655
-#define PCI_DEVICE_ID_SI_730           0x0730
-#define PCI_DEVICE_ID_SI_733           0x0733
-#define PCI_DEVICE_ID_SI_630_VGA       0x6300
-#define PCI_DEVICE_ID_SI_730_VGA       0x7300
-#define PCI_DEVICE_ID_SI_735           0x0735
-#define PCI_DEVICE_ID_SI_740           0x0740
-#define PCI_DEVICE_ID_SI_745           0x0745
-#define PCI_DEVICE_ID_SI_746           0x0746
-#define PCI_DEVICE_ID_SI_748           0x0748
-#define PCI_DEVICE_ID_SI_750           0x0750
-#define PCI_DEVICE_ID_SI_751           0x0751
-#define PCI_DEVICE_ID_SI_752           0x0752
-#define PCI_DEVICE_ID_SI_755            0x0755
-#define PCI_DEVICE_ID_SI_900           0x0900
-#define PCI_DEVICE_ID_SI_5107          0x5107
-#define PCI_DEVICE_ID_SI_5300          0x5300
-#define PCI_DEVICE_ID_SI_5511          0x5511
-#define PCI_DEVICE_ID_SI_5513          0x5513
-#define PCI_DEVICE_ID_SI_5518          0x5518
-#define PCI_DEVICE_ID_SI_5571          0x5571
-#define PCI_DEVICE_ID_SI_5581          0x5581
-#define PCI_DEVICE_ID_SI_5582          0x5582
-#define PCI_DEVICE_ID_SI_5591          0x5591
-#define PCI_DEVICE_ID_SI_5596          0x5596
-#define PCI_DEVICE_ID_SI_5597          0x5597
-#define PCI_DEVICE_ID_SI_5598          0x5598
-#define PCI_DEVICE_ID_SI_5600          0x5600
-#define PCI_DEVICE_ID_SI_6300          0x6300
-#define PCI_DEVICE_ID_SI_6306          0x6306
-#define PCI_DEVICE_ID_SI_6326          0x6326
-#define PCI_DEVICE_ID_SI_7001          0x7001
-#define PCI_DEVICE_ID_SI_7016          0x7016
-
-#define PCI_VENDOR_ID_HP               0x103c
-#define PCI_DEVICE_ID_HP_DONNER_GFX    0x1008
-#define PCI_DEVICE_ID_HP_TACHYON       0x1028
-#define PCI_DEVICE_ID_HP_TACHLITE      0x1029
-#define PCI_DEVICE_ID_HP_J2585A                0x1030
-#define PCI_DEVICE_ID_HP_J2585B                0x1031
-#define PCI_DEVICE_ID_HP_SAS           0x1048
-#define PCI_DEVICE_ID_HP_DIVA1         0x1049
-#define PCI_DEVICE_ID_HP_DIVA2         0x104A
-#define PCI_DEVICE_ID_HP_SP2_0         0x104B
-#define PCI_DEVICE_ID_HP_PCI_LBA       0x1054
-#define PCI_DEVICE_ID_HP_REO_SBA       0x10f0
-#define PCI_DEVICE_ID_HP_REO_IOC       0x10f1
-#define PCI_DEVICE_ID_HP_ZX1_SBA       0x1229
-#define PCI_DEVICE_ID_HP_ZX1_IOC       0x122a
-#define PCI_DEVICE_ID_HP_PCIX_LBA      0x122e
-#define PCI_DEVICE_ID_HP_SX1000_IOC    0x127c
-
-#define PCI_VENDOR_ID_PCTECH           0x1042
-#define PCI_DEVICE_ID_PCTECH_RZ1000    0x1000
-#define PCI_DEVICE_ID_PCTECH_RZ1001    0x1001
-#define PCI_DEVICE_ID_PCTECH_SAMURAI_0 0x3000
-#define PCI_DEVICE_ID_PCTECH_SAMURAI_1 0x3010
-#define PCI_DEVICE_ID_PCTECH_SAMURAI_IDE 0x3020
-
-#define PCI_VENDOR_ID_ASUSTEK          0x1043
-#define PCI_DEVICE_ID_ASUSTEK_0675     0x0675
-
-#define PCI_VENDOR_ID_DPT              0x1044
-#define PCI_DEVICE_ID_DPT              0xa400
-
-#define PCI_VENDOR_ID_OPTI             0x1045
-#define PCI_DEVICE_ID_OPTI_92C178      0xc178
-#define PCI_DEVICE_ID_OPTI_82C557      0xc557
-#define PCI_DEVICE_ID_OPTI_82C558      0xc558
-#define PCI_DEVICE_ID_OPTI_82C621      0xc621
-#define PCI_DEVICE_ID_OPTI_82C700      0xc700
-#define PCI_DEVICE_ID_OPTI_82C701      0xc701
-#define PCI_DEVICE_ID_OPTI_82C814      0xc814
-#define PCI_DEVICE_ID_OPTI_82C822      0xc822
-#define PCI_DEVICE_ID_OPTI_82C861      0xc861
-#define PCI_DEVICE_ID_OPTI_82C825      0xd568
-
-#define PCI_VENDOR_ID_ELSA             0x1048
-#define PCI_DEVICE_ID_ELSA_MICROLINK   0x1000
-#define PCI_DEVICE_ID_ELSA_QS3000      0x3000
-
-#define PCI_VENDOR_ID_SGS              0x104a
-#define PCI_DEVICE_ID_SGS_2000         0x0008
-#define PCI_DEVICE_ID_SGS_1764         0x0009
-
-#define PCI_VENDOR_ID_BUSLOGIC               0x104B
-#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140
-#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER    0x1040
-#define PCI_DEVICE_ID_BUSLOGIC_FLASHPOINT     0x8130
-
-#define PCI_VENDOR_ID_TI               0x104c
-#define PCI_DEVICE_ID_TI_TVP4010       0x3d04
-#define PCI_DEVICE_ID_TI_TVP4020       0x3d07
-#define PCI_DEVICE_ID_TI_1130          0xac12
-#define PCI_DEVICE_ID_TI_1031          0xac13
-#define PCI_DEVICE_ID_TI_1131          0xac15
-#define PCI_DEVICE_ID_TI_1250          0xac16
-#define PCI_DEVICE_ID_TI_1220          0xac17
-#define PCI_DEVICE_ID_TI_1221          0xac19
-#define PCI_DEVICE_ID_TI_1210          0xac1a
-#define PCI_DEVICE_ID_TI_1410          0xac50
-#define PCI_DEVICE_ID_TI_1450          0xac1b
-#define PCI_DEVICE_ID_TI_1225          0xac1c
-#define PCI_DEVICE_ID_TI_1251A         0xac1d
-#define PCI_DEVICE_ID_TI_1211          0xac1e
-#define PCI_DEVICE_ID_TI_1251B         0xac1f
-#define PCI_DEVICE_ID_TI_4410          0xac41
-#define PCI_DEVICE_ID_TI_4451          0xac42
-#define PCI_DEVICE_ID_TI_1420          0xac51
-
-#define PCI_VENDOR_ID_SONY             0x104d
-#define PCI_DEVICE_ID_SONY_CXD3222     0x8039
-
-#define PCI_VENDOR_ID_OAK              0x104e
-#define PCI_DEVICE_ID_OAK_OTI107       0x0107
-
-/* Winbond have two vendor IDs! See 0x10ad as well */
-#define PCI_VENDOR_ID_WINBOND2         0x1050
-#define PCI_DEVICE_ID_WINBOND2_89C940  0x0940
-#define PCI_DEVICE_ID_WINBOND2_89C940F 0x5a5a
-#define PCI_DEVICE_ID_WINBOND2_6692    0x6692
-
-#define PCI_VENDOR_ID_ANIGMA           0x1051
-#define PCI_DEVICE_ID_ANIGMA_MC145575  0x0100
-  
-#define PCI_VENDOR_ID_EFAR             0x1055
-#define PCI_DEVICE_ID_EFAR_SLC90E66_1  0x9130
-#define PCI_DEVICE_ID_EFAR_SLC90E66_0  0x9460
-#define PCI_DEVICE_ID_EFAR_SLC90E66_2  0x9462
-#define PCI_DEVICE_ID_EFAR_SLC90E66_3  0x9463
-
-#define PCI_VENDOR_ID_MOTOROLA         0x1057
-#define PCI_VENDOR_ID_MOTOROLA_OOPS    0x1507
-#define PCI_DEVICE_ID_MOTOROLA_MPC105  0x0001
-#define PCI_DEVICE_ID_MOTOROLA_MPC106  0x0002
-#define PCI_DEVICE_ID_MOTOROLA_MPC107  0x0004
-#define PCI_DEVICE_ID_MOTOROLA_RAVEN   0x4801
-#define PCI_DEVICE_ID_MOTOROLA_FALCON  0x4802
-#define PCI_DEVICE_ID_MOTOROLA_HAWK    0x4803
-#define PCI_DEVICE_ID_MOTOROLA_CPX8216 0x4806
-
-#define PCI_VENDOR_ID_PROMISE          0x105a
-#define PCI_DEVICE_ID_PROMISE_20265    0x0d30
-#define PCI_DEVICE_ID_PROMISE_20267    0x4d30
-#define PCI_DEVICE_ID_PROMISE_20246    0x4d33
-#define PCI_DEVICE_ID_PROMISE_20262    0x4d38
-#define PCI_DEVICE_ID_PROMISE_20263    0x0D38
-#define PCI_DEVICE_ID_PROMISE_20268    0x4d68
-#define PCI_DEVICE_ID_PROMISE_20270    0x6268
-#define PCI_DEVICE_ID_PROMISE_20269    0x4d69
-#define PCI_DEVICE_ID_PROMISE_20271    0x6269
-#define PCI_DEVICE_ID_PROMISE_20275    0x1275
-#define PCI_DEVICE_ID_PROMISE_20276    0x5275
-#define PCI_DEVICE_ID_PROMISE_20277    0x7275
-#define PCI_DEVICE_ID_PROMISE_5300     0x5300
-
-#define PCI_VENDOR_ID_N9               0x105d
-#define PCI_DEVICE_ID_N9_I128          0x2309
-#define PCI_DEVICE_ID_N9_I128_2                0x2339
-#define PCI_DEVICE_ID_N9_I128_T2R      0x493d
-
-#define PCI_VENDOR_ID_UMC              0x1060
-#define PCI_DEVICE_ID_UMC_UM8673F      0x0101
-#define PCI_DEVICE_ID_UMC_UM8891A      0x0891
-#define PCI_DEVICE_ID_UMC_UM8886BF     0x673a
-#define PCI_DEVICE_ID_UMC_UM8886A      0x886a
-#define PCI_DEVICE_ID_UMC_UM8881F      0x8881
-#define PCI_DEVICE_ID_UMC_UM8886F      0x8886
-#define PCI_DEVICE_ID_UMC_UM9017F      0x9017
-#define PCI_DEVICE_ID_UMC_UM8886N      0xe886
-#define PCI_DEVICE_ID_UMC_UM8891N      0xe891
-
-#define PCI_VENDOR_ID_X                        0x1061
-#define PCI_DEVICE_ID_X_AGX016         0x0001
-
-#define PCI_VENDOR_ID_MYLEX            0x1069
-#define PCI_DEVICE_ID_MYLEX_DAC960_P   0x0001
-#define PCI_DEVICE_ID_MYLEX_DAC960_PD  0x0002
-#define PCI_DEVICE_ID_MYLEX_DAC960_PG  0x0010
-#define PCI_DEVICE_ID_MYLEX_DAC960_LA  0x0020
-#define PCI_DEVICE_ID_MYLEX_DAC960_LP  0x0050
-#define PCI_DEVICE_ID_MYLEX_DAC960_BA  0xBA56
-
-#define PCI_VENDOR_ID_PICOP            0x1066
-#define PCI_DEVICE_ID_PICOP_PT86C52X   0x0001
-#define PCI_DEVICE_ID_PICOP_PT80C524   0x8002
-
-#define PCI_VENDOR_ID_APPLE            0x106b
-#define PCI_DEVICE_ID_APPLE_BANDIT     0x0001
-#define PCI_DEVICE_ID_APPLE_GC         0x0002
-#define PCI_DEVICE_ID_APPLE_HYDRA      0x000e
-#define PCI_DEVICE_ID_APPLE_UNI_N_FW   0x0018
-#define PCI_DEVICE_ID_APPLE_KL_USB     0x0019
-#define PCI_DEVICE_ID_APPLE_UNI_N_AGP  0x0020
-#define PCI_DEVICE_ID_APPLE_UNI_N_GMAC 0x0021
-#define PCI_DEVICE_ID_APPLE_KEYLARGO   0x0022
-#define PCI_DEVICE_ID_APPLE_UNI_N_GMACP        0x0024
-#define PCI_DEVICE_ID_APPLE_KEYLARGO_P 0x0025
-#define PCI_DEVICE_ID_APPLE_KL_USB_P   0x0026
-#define PCI_DEVICE_ID_APPLE_UNI_N_AGP_P        0x0027
-#define PCI_DEVICE_ID_APPLE_UNI_N_AGP15        0x002d
-#define PCI_DEVICE_ID_APPLE_UNI_N_FW2  0x0030
-
-#define PCI_VENDOR_ID_YAMAHA           0x1073
-#define PCI_DEVICE_ID_YAMAHA_724       0x0004
-#define PCI_DEVICE_ID_YAMAHA_724F      0x000d
-#define PCI_DEVICE_ID_YAMAHA_740       0x000a
-#define PCI_DEVICE_ID_YAMAHA_740C      0x000c
-#define PCI_DEVICE_ID_YAMAHA_744       0x0010
-#define PCI_DEVICE_ID_YAMAHA_754       0x0012
-
-#define PCI_VENDOR_ID_NEXGEN           0x1074
-#define PCI_DEVICE_ID_NEXGEN_82C501    0x4e78
-
-#define PCI_VENDOR_ID_QLOGIC           0x1077
-#define PCI_DEVICE_ID_QLOGIC_ISP1020   0x1020
-#define PCI_DEVICE_ID_QLOGIC_ISP1022   0x1022
-#define PCI_DEVICE_ID_QLOGIC_ISP2100   0x2100
-#define PCI_DEVICE_ID_QLOGIC_ISP2200   0x2200
-
-#define PCI_VENDOR_ID_CYRIX            0x1078
-#define PCI_DEVICE_ID_CYRIX_5510       0x0000
-#define PCI_DEVICE_ID_CYRIX_PCI_MASTER 0x0001
-#define PCI_DEVICE_ID_CYRIX_5520       0x0002
-#define PCI_DEVICE_ID_CYRIX_5530_LEGACY        0x0100
-#define PCI_DEVICE_ID_CYRIX_5530_SMI   0x0101
-#define PCI_DEVICE_ID_CYRIX_5530_IDE   0x0102
-#define PCI_DEVICE_ID_CYRIX_5530_AUDIO 0x0103
-#define PCI_DEVICE_ID_CYRIX_5530_VIDEO 0x0104
-
-#define PCI_VENDOR_ID_LEADTEK          0x107d
-#define PCI_DEVICE_ID_LEADTEK_805      0x0000
-
-#define PCI_VENDOR_ID_INTERPHASE       0x107e
-#define PCI_DEVICE_ID_INTERPHASE_5526  0x0004
-#define PCI_DEVICE_ID_INTERPHASE_55x6  0x0005
-#define PCI_DEVICE_ID_INTERPHASE_5575  0x0008
-
-#define PCI_VENDOR_ID_CONTAQ           0x1080
-#define PCI_DEVICE_ID_CONTAQ_82C599    0x0600
-#define PCI_DEVICE_ID_CONTAQ_82C693    0xc693
-
-#define PCI_VENDOR_ID_FOREX            0x1083
-
-#define PCI_VENDOR_ID_OLICOM           0x108d
-#define PCI_DEVICE_ID_OLICOM_OC3136    0x0001
-#define PCI_DEVICE_ID_OLICOM_OC2315    0x0011
-#define PCI_DEVICE_ID_OLICOM_OC2325    0x0012
-#define PCI_DEVICE_ID_OLICOM_OC2183    0x0013
-#define PCI_DEVICE_ID_OLICOM_OC2326    0x0014
-#define PCI_DEVICE_ID_OLICOM_OC6151    0x0021
-
-#define PCI_VENDOR_ID_SUN              0x108e
-#define PCI_DEVICE_ID_SUN_EBUS         0x1000
-#define PCI_DEVICE_ID_SUN_HAPPYMEAL    0x1001
-#define PCI_DEVICE_ID_SUN_RIO_EBUS     0x1100
-#define PCI_DEVICE_ID_SUN_RIO_GEM      0x1101
-#define PCI_DEVICE_ID_SUN_RIO_1394     0x1102
-#define PCI_DEVICE_ID_SUN_RIO_USB      0x1103
-#define PCI_DEVICE_ID_SUN_GEM          0x2bad
-#define PCI_DEVICE_ID_SUN_SIMBA                0x5000
-#define PCI_DEVICE_ID_SUN_PBM          0x8000
-#define PCI_DEVICE_ID_SUN_SCHIZO       0x8001
-#define PCI_DEVICE_ID_SUN_SABRE                0xa000
-#define PCI_DEVICE_ID_SUN_HUMMINGBIRD  0xa001
-#define PCI_DEVICE_ID_SUN_TOMATILLO    0xa801
-
-#define PCI_VENDOR_ID_CMD              0x1095
-#define PCI_DEVICE_ID_SII_1210SA       0x0240
-
-#define PCI_DEVICE_ID_CMD_640          0x0640
-#define PCI_DEVICE_ID_CMD_643          0x0643
-#define PCI_DEVICE_ID_CMD_646          0x0646
-#define PCI_DEVICE_ID_CMD_647          0x0647
-#define PCI_DEVICE_ID_CMD_648          0x0648
-#define PCI_DEVICE_ID_CMD_649          0x0649
-#define PCI_DEVICE_ID_CMD_670          0x0670
-
-#define PCI_DEVICE_ID_SII_680          0x0680
-#define PCI_DEVICE_ID_SII_3112         0x3112
-
-#define PCI_VENDOR_ID_VISION           0x1098
-#define PCI_DEVICE_ID_VISION_QD8500    0x0001
-#define PCI_DEVICE_ID_VISION_QD8580    0x0002
-
-#define PCI_VENDOR_ID_BROOKTREE                0x109e
-#define PCI_DEVICE_ID_BROOKTREE_848    0x0350
-#define PCI_DEVICE_ID_BROOKTREE_849A   0x0351
-#define PCI_DEVICE_ID_BROOKTREE_878_1  0x036e
-#define PCI_DEVICE_ID_BROOKTREE_878    0x0878
-#define PCI_DEVICE_ID_BROOKTREE_8474   0x8474
-
-#define PCI_VENDOR_ID_SIERRA           0x10a8
-#define PCI_DEVICE_ID_SIERRA_STB       0x0000
-
-#define PCI_VENDOR_ID_SGI              0x10a9
-#define PCI_DEVICE_ID_SGI_IOC3         0x0003
-#define PCI_DEVICE_ID_SGI_IOC4         0x100a
-
-#define PCI_VENDOR_ID_ACC              0x10aa
-#define PCI_DEVICE_ID_ACC_2056         0x0000
-
-#define PCI_VENDOR_ID_WINBOND          0x10ad
-#define PCI_DEVICE_ID_WINBOND_83769    0x0001
-#define PCI_DEVICE_ID_WINBOND_82C105   0x0105
-#define PCI_DEVICE_ID_WINBOND_83C553   0x0565
-
-#define PCI_VENDOR_ID_DATABOOK         0x10b3
-#define PCI_DEVICE_ID_DATABOOK_87144   0xb106
-
-#define PCI_VENDOR_ID_PLX              0x10b5
-#define PCI_DEVICE_ID_PLX_R685         0x1030
-#define PCI_DEVICE_ID_PLX_ROMULUS      0x106a
-#define PCI_DEVICE_ID_PLX_SPCOM800     0x1076
-#define PCI_DEVICE_ID_PLX_1077         0x1077
-#define PCI_DEVICE_ID_PLX_SPCOM200     0x1103
-#define PCI_DEVICE_ID_PLX_DJINN_ITOO   0x1151
-#define PCI_DEVICE_ID_PLX_R753         0x1152
-#define PCI_DEVICE_ID_PLX_9050         0x9050
-#define PCI_DEVICE_ID_PLX_9060         0x9060
-#define PCI_DEVICE_ID_PLX_9060ES       0x906E
-#define PCI_DEVICE_ID_PLX_9060SD       0x906D
-#define PCI_DEVICE_ID_PLX_9080         0x9080
-#define PCI_DEVICE_ID_PLX_GTEK_SERIAL2 0xa001
-
-#define PCI_VENDOR_ID_MADGE            0x10b6
-#define PCI_DEVICE_ID_MADGE_MK2                0x0002
-#define PCI_DEVICE_ID_MADGE_C155S      0x1001
-
-#define PCI_VENDOR_ID_3COM             0x10b7
-#define PCI_DEVICE_ID_3COM_3C985       0x0001
-#define PCI_DEVICE_ID_3COM_3C339       0x3390
-#define PCI_DEVICE_ID_3COM_3C590       0x5900
-#define PCI_DEVICE_ID_3COM_3C595TX     0x5950
-#define PCI_DEVICE_ID_3COM_3C595T4     0x5951
-#define PCI_DEVICE_ID_3COM_3C595MII    0x5952
-#define PCI_DEVICE_ID_3COM_3C900TPO    0x9000
-#define PCI_DEVICE_ID_3COM_3C900COMBO  0x9001
-#define PCI_DEVICE_ID_3COM_3C905TX     0x9050
-#define PCI_DEVICE_ID_3COM_3C905T4     0x9051
-#define PCI_DEVICE_ID_3COM_3C905B_TX   0x9055
-#define PCI_DEVICE_ID_3COM_3CR990      0x9900
-#define PCI_DEVICE_ID_3COM_3CR990_TX_95        0x9902
-#define PCI_DEVICE_ID_3COM_3CR990_TX_97        0x9903
-#define PCI_DEVICE_ID_3COM_3CR990B     0x9904
-#define PCI_DEVICE_ID_3COM_3CR990_FX   0x9905
-#define PCI_DEVICE_ID_3COM_3CR990SVR95 0x9908
-#define PCI_DEVICE_ID_3COM_3CR990SVR97 0x9909
-#define PCI_DEVICE_ID_3COM_3CR990SVR   0x990a
-
-#define PCI_VENDOR_ID_SMC              0x10b8
-#define PCI_DEVICE_ID_SMC_EPIC100      0x0005
-
-#define PCI_VENDOR_ID_AL               0x10b9
-#define PCI_DEVICE_ID_AL_M1445         0x1445
-#define PCI_DEVICE_ID_AL_M1449         0x1449
-#define PCI_DEVICE_ID_AL_M1451         0x1451
-#define PCI_DEVICE_ID_AL_M1461         0x1461
-#define PCI_DEVICE_ID_AL_M1489         0x1489
-#define PCI_DEVICE_ID_AL_M1511         0x1511
-#define PCI_DEVICE_ID_AL_M1513         0x1513
-#define PCI_DEVICE_ID_AL_M1521         0x1521
-#define PCI_DEVICE_ID_AL_M1523         0x1523
-#define PCI_DEVICE_ID_AL_M1531         0x1531
-#define PCI_DEVICE_ID_AL_M1533         0x1533
-#define PCI_DEVICE_ID_AL_M1535                 0x1535
-#define PCI_DEVICE_ID_AL_M1541         0x1541
-#define PCI_DEVICE_ID_AL_M1621          0x1621
-#define PCI_DEVICE_ID_AL_M1631          0x1631
-#define PCI_DEVICE_ID_AL_M1641          0x1641
-#define PCI_DEVICE_ID_AL_M1644          0x1644
-#define PCI_DEVICE_ID_AL_M1647          0x1647
-#define PCI_DEVICE_ID_AL_M1651          0x1651
-#define PCI_DEVICE_ID_AL_M1543         0x1543
-#define PCI_DEVICE_ID_AL_M3307         0x3307
-#define PCI_DEVICE_ID_AL_M4803         0x5215
-#define PCI_DEVICE_ID_AL_M5219         0x5219
-#define PCI_DEVICE_ID_AL_M5229         0x5229
-#define PCI_DEVICE_ID_AL_M5237         0x5237
-#define PCI_DEVICE_ID_AL_M5243         0x5243
-#define PCI_DEVICE_ID_AL_M5451         0x5451
-#define PCI_DEVICE_ID_AL_M7101         0x7101
-
-#define PCI_VENDOR_ID_MITSUBISHI       0x10ba
-
-#define PCI_VENDOR_ID_SURECOM          0x10bd
-#define PCI_DEVICE_ID_SURECOM_NE34     0x0e34
-
-#define PCI_VENDOR_ID_NEOMAGIC         0x10c8
-#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_NM2070 0x0001
-#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128V 0x0002
-#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZV 0x0003
-#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_NM2160 0x0004
-#define PCI_DEVICE_ID_NEOMAGIC_MAGICMEDIA_256AV       0x0005
-#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZVPLUS   0x0083
-
-#define PCI_VENDOR_ID_ASP              0x10cd
-#define PCI_DEVICE_ID_ASP_ABP940       0x1200
-#define PCI_DEVICE_ID_ASP_ABP940U      0x1300
-#define PCI_DEVICE_ID_ASP_ABP940UW     0x2300
-
-#define PCI_VENDOR_ID_MACRONIX         0x10d9
-#define PCI_DEVICE_ID_MACRONIX_MX98713 0x0512
-#define PCI_DEVICE_ID_MACRONIX_MX987x5 0x0531
-
-#define PCI_VENDOR_ID_TCONRAD          0x10da
-#define PCI_DEVICE_ID_TCONRAD_TOKENRING        0x0508
-
-#define PCI_VENDOR_ID_CERN             0x10dc
-#define PCI_DEVICE_ID_CERN_SPSB_PMC    0x0001
-#define PCI_DEVICE_ID_CERN_SPSB_PCI    0x0002
-#define PCI_DEVICE_ID_CERN_HIPPI_DST   0x0021
-#define PCI_DEVICE_ID_CERN_HIPPI_SRC   0x0022
-
-#define PCI_VENDOR_ID_NVIDIA                   0x10de
-#define PCI_DEVICE_ID_NVIDIA_TNT               0x0020
-#define PCI_DEVICE_ID_NVIDIA_TNT2              0x0028
-#define PCI_DEVICE_ID_NVIDIA_UTNT2             0x0029
-#define PCI_DEVICE_ID_NVIDIA_VTNT2             0x002C
-#define PCI_DEVICE_ID_NVIDIA_UVTNT2            0x002D
-#define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE       0x0065
-#define PCI_DEVICE_ID_NVIDIA_ITNT2             0x00A0
-#define PCI_DEVICE_ID_NVIDIA_NFORCE3           0x00d1
-#define PCI_DEVICE_ID_NVIDIA_NFORCE3S          0x00e1
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE_SDR       0x0100
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR       0x0101
-#define PCI_DEVICE_ID_NVIDIA_QUADRO            0x0103
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX       0x0110
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX2      0x0111
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO       0x0112
-#define PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR       0x0113
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS      0x0150
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2     0x0151
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA    0x0152
-#define PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO       0x0153
-#define PCI_DEVICE_ID_NVIDIA_IGEFORCE2         0x01a0
-#define PCI_DEVICE_ID_NVIDIA_NFORCE            0x01a4
-#define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE                0x01bc
-#define PCI_DEVICE_ID_NVIDIA_NFORCE2           0x01e0
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE3          0x0200
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE3_1                0x0201
-#define PCI_DEVICE_ID_NVIDIA_GEFORCE3_2                0x0202
-#define PCI_DEVICE_ID_NVIDIA_QUADRO_DDC                0x0203
-
-#define PCI_VENDOR_ID_IMS              0x10e0
-#define PCI_DEVICE_ID_IMS_8849         0x8849
-#define PCI_DEVICE_ID_IMS_TT128                0x9128
-#define PCI_DEVICE_ID_IMS_TT3D         0x9135
-
-#define PCI_VENDOR_ID_TEKRAM2          0x10e1
-#define PCI_DEVICE_ID_TEKRAM2_690c     0x690c
-
-#define PCI_VENDOR_ID_TUNDRA           0x10e3
-#define PCI_DEVICE_ID_TUNDRA_CA91C042  0x0000
-
-#define PCI_VENDOR_ID_AMCC             0x10e8
-#define PCI_DEVICE_ID_AMCC_MYRINET     0x8043
-#define PCI_DEVICE_ID_AMCC_PARASTATION 0x8062
-#define PCI_DEVICE_ID_AMCC_S5933       0x807d
-#define PCI_DEVICE_ID_AMCC_S5933_HEPC3 0x809c
-
-#define PCI_VENDOR_ID_INTERG           0x10ea
-#define PCI_DEVICE_ID_INTERG_1680      0x1680
-#define PCI_DEVICE_ID_INTERG_1682      0x1682
-#define PCI_DEVICE_ID_INTERG_2000      0x2000
-#define PCI_DEVICE_ID_INTERG_2010      0x2010
-#define PCI_DEVICE_ID_INTERG_5000      0x5000
-#define PCI_DEVICE_ID_INTERG_5050      0x5050
-
-#define PCI_VENDOR_ID_REALTEK          0x10ec
-#define PCI_DEVICE_ID_REALTEK_8029     0x8029
-#define PCI_DEVICE_ID_REALTEK_8129     0x8129
-#define PCI_DEVICE_ID_REALTEK_8139     0x8139
-#define PCI_DEVICE_ID_REALTEK_8169     0x8169
-
-#define PCI_VENDOR_ID_XILINX           0x10ee
-#define PCI_DEVICE_ID_TURBOPAM         0x4020
-
-#define PCI_VENDOR_ID_TRUEVISION       0x10fa
-#define PCI_DEVICE_ID_TRUEVISION_T1000 0x000c
-
-#define PCI_VENDOR_ID_INIT             0x1101
-#define PCI_DEVICE_ID_INIT_320P                0x9100
-#define PCI_DEVICE_ID_INIT_360P                0x9500
-
-#define PCI_VENDOR_ID_CREATIVE         0x1102 // duplicate: ECTIVA
-#define PCI_DEVICE_ID_CREATIVE_EMU10K1 0x0002
-
-#define PCI_VENDOR_ID_ECTIVA           0x1102 // duplicate: CREATIVE
-#define PCI_DEVICE_ID_ECTIVA_EV1938    0x8938
-
-#define PCI_VENDOR_ID_TTI              0x1103
-#define PCI_DEVICE_ID_TTI_HPT343       0x0003
-#define PCI_DEVICE_ID_TTI_HPT366       0x0004
-#define PCI_DEVICE_ID_TTI_HPT372       0x0005
-#define PCI_DEVICE_ID_TTI_HPT302       0x0006
-#define PCI_DEVICE_ID_TTI_HPT371       0x0007
-#define PCI_DEVICE_ID_TTI_HPT374       0x0008
-#define PCI_DEVICE_ID_TTI_HPT372N      0x0009  // appoarently a 372N variant?
-
-#define PCI_VENDOR_ID_VIA              0x1106
-#define PCI_DEVICE_ID_VIA_8363_0       0x0305
-#define PCI_DEVICE_ID_VIA_8371_0       0x0391
-#define PCI_DEVICE_ID_VIA_8501_0       0x0501
-#define PCI_DEVICE_ID_VIA_82C505       0x0505
-#define PCI_DEVICE_ID_VIA_82C561       0x0561
-#define PCI_DEVICE_ID_VIA_82C586_1     0x0571
-#define PCI_DEVICE_ID_VIA_82C576       0x0576
-#define PCI_DEVICE_ID_VIA_82C585       0x0585
-#define PCI_DEVICE_ID_VIA_82C586_0     0x0586
-#define PCI_DEVICE_ID_VIA_82C595       0x0595
-#define PCI_DEVICE_ID_VIA_82C596       0x0596
-#define PCI_DEVICE_ID_VIA_82C597_0     0x0597
-#define PCI_DEVICE_ID_VIA_82C598_0     0x0598
-#define PCI_DEVICE_ID_VIA_8601_0       0x0601
-#define PCI_DEVICE_ID_VIA_8605_0       0x0605
-#define PCI_DEVICE_ID_VIA_82C680       0x0680
-#define PCI_DEVICE_ID_VIA_82C686       0x0686
-#define PCI_DEVICE_ID_VIA_82C691       0x0691
-#define PCI_DEVICE_ID_VIA_82C693       0x0693
-#define PCI_DEVICE_ID_VIA_82C693_1     0x0698
-#define PCI_DEVICE_ID_VIA_82C926       0x0926
-#define PCI_DEVICE_ID_VIA_82C576_1     0x1571
-#define PCI_DEVICE_ID_VIA_82C595_97    0x1595
-#define PCI_DEVICE_ID_VIA_82C586_2     0x3038
-#define PCI_DEVICE_ID_VIA_82C586_3     0x3040
-#define PCI_DEVICE_ID_VIA_6305         0x3044
-#define PCI_DEVICE_ID_VIA_82C596_3     0x3050
-#define PCI_DEVICE_ID_VIA_82C596B_3    0x3051
-#define PCI_DEVICE_ID_VIA_82C686_4     0x3057
-#define PCI_DEVICE_ID_VIA_82C686_5     0x3058
-#define PCI_DEVICE_ID_VIA_8233_5       0x3059
-#define PCI_DEVICE_ID_VIA_8233_7       0x3065
-#define PCI_DEVICE_ID_VIA_82C686_6     0x3068
-#define PCI_DEVICE_ID_VIA_8233_0       0x3074
-#define PCI_DEVICE_ID_VIA_8633_0       0x3091
-#define PCI_DEVICE_ID_VIA_8367_0       0x3099
-#define PCI_DEVICE_ID_VIA_8622         0x3102
-#define PCI_DEVICE_ID_VIA_8233C_0      0x3109
-#define PCI_DEVICE_ID_VIA_8361         0x3112
-#define PCI_DEVICE_ID_VIA_8375         0x3116
-#define PCI_DEVICE_ID_VIA_CLE266       0x3123
-#define PCI_DEVICE_ID_VIA_8233A                0x3147
-#define PCI_DEVICE_ID_VIA_P4M266       0x3148
-#define PCI_DEVICE_ID_VIA_8237_SATA    0x3149
-#define PCI_DEVICE_ID_VIA_P4X333       0x3168
-#define PCI_DEVICE_ID_VIA_8235         0x3177
-#define PCI_DEVICE_ID_VIA_8377_0       0x3189
-#define PCI_DEVICE_ID_VIA_K8T400M_0    0x3188
-#define PCI_DEVICE_ID_VIA_8237         0x3227
-#define PCI_DEVICE_ID_VIA_86C100A      0x6100
-#define PCI_DEVICE_ID_VIA_8231         0x8231
-#define PCI_DEVICE_ID_VIA_8231_4       0x8235
-#define PCI_DEVICE_ID_VIA_8365_1       0x8305
-#define PCI_DEVICE_ID_VIA_8371_1       0x8391
-#define PCI_DEVICE_ID_VIA_8501_1       0x8501
-#define PCI_DEVICE_ID_VIA_82C597_1     0x8597
-#define PCI_DEVICE_ID_VIA_82C598_1     0x8598
-#define PCI_DEVICE_ID_VIA_8601_1       0x8601
-#define PCI_DEVICE_ID_VIA_8505_1       0x8605
-#define PCI_DEVICE_ID_VIA_8633_1       0xB091
-#define PCI_DEVICE_ID_VIA_8367_1       0xB099
-
-#define PCI_VENDOR_ID_SIEMENS           0x110A
-#define PCI_DEVICE_ID_SIEMENS_DSCC4     0x2102
-
-#define PCI_VENDOR_ID_SMC2             0x1113
-#define PCI_DEVICE_ID_SMC2_1211TX      0x1211
-
-#define PCI_VENDOR_ID_VORTEX           0x1119
-#define PCI_DEVICE_ID_VORTEX_GDT60x0   0x0000
-#define PCI_DEVICE_ID_VORTEX_GDT6000B  0x0001
-#define PCI_DEVICE_ID_VORTEX_GDT6x10   0x0002
-#define PCI_DEVICE_ID_VORTEX_GDT6x20   0x0003
-#define PCI_DEVICE_ID_VORTEX_GDT6530   0x0004
-#define PCI_DEVICE_ID_VORTEX_GDT6550   0x0005
-#define PCI_DEVICE_ID_VORTEX_GDT6x17   0x0006
-#define PCI_DEVICE_ID_VORTEX_GDT6x27   0x0007
-#define PCI_DEVICE_ID_VORTEX_GDT6537   0x0008
-#define PCI_DEVICE_ID_VORTEX_GDT6557   0x0009
-#define PCI_DEVICE_ID_VORTEX_GDT6x15   0x000a
-#define PCI_DEVICE_ID_VORTEX_GDT6x25   0x000b
-#define PCI_DEVICE_ID_VORTEX_GDT6535   0x000c
-#define PCI_DEVICE_ID_VORTEX_GDT6555   0x000d
-#define PCI_DEVICE_ID_VORTEX_GDT6x17RP 0x0100
-#define PCI_DEVICE_ID_VORTEX_GDT6x27RP 0x0101
-#define PCI_DEVICE_ID_VORTEX_GDT6537RP 0x0102
-#define PCI_DEVICE_ID_VORTEX_GDT6557RP 0x0103
-#define PCI_DEVICE_ID_VORTEX_GDT6x11RP 0x0104
-#define PCI_DEVICE_ID_VORTEX_GDT6x21RP 0x0105
-#define PCI_DEVICE_ID_VORTEX_GDT6x17RP1        0x0110
-#define PCI_DEVICE_ID_VORTEX_GDT6x27RP1        0x0111
-#define PCI_DEVICE_ID_VORTEX_GDT6537RP1        0x0112
-#define PCI_DEVICE_ID_VORTEX_GDT6557RP1        0x0113
-#define PCI_DEVICE_ID_VORTEX_GDT6x11RP1        0x0114
-#define PCI_DEVICE_ID_VORTEX_GDT6x21RP1        0x0115
-#define PCI_DEVICE_ID_VORTEX_GDT6x17RP2        0x0120
-#define PCI_DEVICE_ID_VORTEX_GDT6x27RP2        0x0121
-#define PCI_DEVICE_ID_VORTEX_GDT6537RP2        0x0122
-#define PCI_DEVICE_ID_VORTEX_GDT6557RP2        0x0123
-#define PCI_DEVICE_ID_VORTEX_GDT6x11RP2        0x0124
-#define PCI_DEVICE_ID_VORTEX_GDT6x21RP2        0x0125
-
-#define PCI_VENDOR_ID_EF               0x111a
-#define PCI_DEVICE_ID_EF_ATM_FPGA      0x0000
-#define PCI_DEVICE_ID_EF_ATM_ASIC      0x0002
-
-#define PCI_VENDOR_ID_IDT              0x111d
-#define PCI_DEVICE_ID_IDT_IDT77201     0x0001
-
-#define PCI_VENDOR_ID_FORE             0x1127
-#define PCI_DEVICE_ID_FORE_PCA200PC    0x0210
-#define PCI_DEVICE_ID_FORE_PCA200E     0x0300
-
-#define PCI_VENDOR_ID_IMAGINGTECH      0x112f
-#define PCI_DEVICE_ID_IMAGINGTECH_ICPCI        0x0000
-
-#define PCI_VENDOR_ID_PHILIPS          0x1131
-#define PCI_DEVICE_ID_PHILIPS_SAA7145  0x7145
-#define PCI_DEVICE_ID_PHILIPS_SAA7146  0x7146
-#define PCI_DEVICE_ID_PHILIPS_SAA9730  0x9730
-
-#define PCI_VENDOR_ID_EICON            0x1133
-#define PCI_DEVICE_ID_EICON_DIVA20PRO  0xe001
-#define PCI_DEVICE_ID_EICON_DIVA20     0xe002
-#define PCI_DEVICE_ID_EICON_DIVA20PRO_U        0xe003
-#define PCI_DEVICE_ID_EICON_DIVA20_U   0xe004
-#define PCI_DEVICE_ID_EICON_DIVA201    0xe005
-#define PCI_DEVICE_ID_EICON_DIVA202    0xe00b
-#define PCI_DEVICE_ID_EICON_MAESTRA    0xe010
-#define PCI_DEVICE_ID_EICON_MAESTRAQ   0xe012
-#define PCI_DEVICE_ID_EICON_MAESTRAQ_U 0xe013
-#define PCI_DEVICE_ID_EICON_MAESTRAP   0xe014
-#define PCI_VENDOR_ID_CYCLONE          0x113c
-#define PCI_DEVICE_ID_CYCLONE_SDK      0x0001
-
-#define PCI_VENDOR_ID_ALLIANCE         0x1142
-#define PCI_DEVICE_ID_ALLIANCE_PROMOTIO        0x3210
-#define PCI_DEVICE_ID_ALLIANCE_PROVIDEO        0x6422
-#define PCI_DEVICE_ID_ALLIANCE_AT24    0x6424
-#define PCI_DEVICE_ID_ALLIANCE_AT3D    0x643d
-
-#define PCI_VENDOR_ID_SYSKONNECT       0x1148
-#define PCI_DEVICE_ID_SYSKONNECT_FP    0x4000
-#define PCI_DEVICE_ID_SYSKONNECT_TR    0x4200
-#define PCI_DEVICE_ID_SYSKONNECT_GE    0x4300
-#define PCI_DEVICE_ID_SYSKONNECT_YU    0x4320
-#define PCI_DEVICE_ID_SYSKONNECT_9DXX  0x4400
-#define PCI_DEVICE_ID_SYSKONNECT_9MXX  0x4500
-
-#define PCI_VENDOR_ID_VMIC             0x114a
-#define PCI_DEVICE_ID_VMIC_VME         0x7587
-
-#define PCI_VENDOR_ID_DIGI             0x114f
-#define PCI_DEVICE_ID_DIGI_EPC         0x0002
-#define PCI_DEVICE_ID_DIGI_RIGHTSWITCH 0x0003
-#define PCI_DEVICE_ID_DIGI_XEM         0x0004
-#define PCI_DEVICE_ID_DIGI_XR          0x0005
-#define PCI_DEVICE_ID_DIGI_CX          0x0006
-#define PCI_DEVICE_ID_DIGI_XRJ         0x0009
-#define PCI_DEVICE_ID_DIGI_EPCJ                0x000a
-#define PCI_DEVICE_ID_DIGI_XR_920      0x0027
-#define PCI_DEVICE_ID_DIGI_DF_M_IOM2_E 0x0070
-#define PCI_DEVICE_ID_DIGI_DF_M_E      0x0071
-#define PCI_DEVICE_ID_DIGI_DF_M_IOM2_A 0x0072
-#define PCI_DEVICE_ID_DIGI_DF_M_A      0x0073
-
-#define PCI_VENDOR_ID_MUTECH           0x1159
-#define PCI_DEVICE_ID_MUTECH_MV1000    0x0001
-
-#define PCI_VENDOR_ID_XIRCOM           0x115d
-#define PCI_DEVICE_ID_XIRCOM_X3201_ETH 0x0003
-#define PCI_DEVICE_ID_XIRCOM_X3201_MDM 0x0103
-
-#define PCI_VENDOR_ID_RENDITION                0x1163
-#define PCI_DEVICE_ID_RENDITION_VERITE 0x0001
-#define PCI_DEVICE_ID_RENDITION_VERITE2100 0x2000
-
-#define PCI_VENDOR_ID_SERVERWORKS        0x1166
-#define PCI_DEVICE_ID_SERVERWORKS_HE     0x0008
-#define PCI_DEVICE_ID_SERVERWORKS_LE     0x0009
-#define PCI_DEVICE_ID_SERVERWORKS_CIOB30  0x0010
-#define PCI_DEVICE_ID_SERVERWORKS_CMIC_HE 0x0011
-#define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017
-#define PCI_DEVICE_ID_SERVERWORKS_OSB4   0x0200
-#define PCI_DEVICE_ID_SERVERWORKS_CSB5   0x0201
-#define PCI_DEVICE_ID_SERVERWORKS_CSB6    0x0203
-#define PCI_DEVICE_ID_SERVERWORKS_OSB4IDE 0x0211
-#define PCI_DEVICE_ID_SERVERWORKS_CSB5IDE 0x0212
-#define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE 0x0213
-#define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 0x0217
-#define PCI_DEVICE_ID_SERVERWORKS_OSB4USB 0x0220
-#define PCI_DEVICE_ID_SERVERWORKS_CSB5USB PCI_DEVICE_ID_SERVERWORKS_OSB4USB
-#define PCI_DEVICE_ID_SERVERWORKS_CSB6USB 0x0221
-#define PCI_DEVICE_ID_SERVERWORKS_GCLE    0x0225
-#define PCI_DEVICE_ID_SERVERWORKS_GCLE2   0x0227
-#define PCI_DEVICE_ID_SERVERWORKS_CSB5ISA 0x0230
-
-#define PCI_VENDOR_ID_SBE              0x1176
-#define PCI_DEVICE_ID_SBE_WANXL100     0x0301
-#define PCI_DEVICE_ID_SBE_WANXL200     0x0302
-#define PCI_DEVICE_ID_SBE_WANXL400     0x0104
-
-#define PCI_VENDOR_ID_TOSHIBA          0x1179
-#define PCI_DEVICE_ID_TOSHIBA_PICCOLO  0x0102
-#define PCI_DEVICE_ID_TOSHIBA_601      0x0601
-#define PCI_DEVICE_ID_TOSHIBA_TOPIC95  0x060a
-#define PCI_DEVICE_ID_TOSHIBA_TOPIC97  0x060f
-
-#define PCI_VENDOR_ID_TOSHIBA_2                0x102f
-#define PCI_DEVICE_ID_TOSHIBA_TX3927   0x000a
-#define PCI_DEVICE_ID_TOSHIBA_TC35815CF        0x0030
-#define PCI_DEVICE_ID_TOSHIBA_TX4927   0x0180
-
-#define PCI_VENDOR_ID_RICOH            0x1180
-#define PCI_DEVICE_ID_RICOH_RL5C465    0x0465
-#define PCI_DEVICE_ID_RICOH_RL5C466    0x0466
-#define PCI_DEVICE_ID_RICOH_RL5C475    0x0475
-#define PCI_DEVICE_ID_RICOH_RL5C476    0x0476
-#define PCI_DEVICE_ID_RICOH_RL5C478    0x0478
-
-#define PCI_VENDOR_ID_ARTOP            0x1191
-#define PCI_DEVICE_ID_ARTOP_ATP8400    0x0004
-#define PCI_DEVICE_ID_ARTOP_ATP850UF   0x0005
-#define PCI_DEVICE_ID_ARTOP_ATP860     0x0006
-#define PCI_DEVICE_ID_ARTOP_ATP860R    0x0007
-#define PCI_DEVICE_ID_ARTOP_ATP865     0x0008
-#define PCI_DEVICE_ID_ARTOP_ATP865R    0x0009
-#define PCI_DEVICE_ID_ARTOP_AEC7610    0x8002
-#define PCI_DEVICE_ID_ARTOP_AEC7612UW  0x8010
-#define PCI_DEVICE_ID_ARTOP_AEC7612U   0x8020
-#define PCI_DEVICE_ID_ARTOP_AEC7612S   0x8030
-#define PCI_DEVICE_ID_ARTOP_AEC7612D   0x8040
-#define PCI_DEVICE_ID_ARTOP_AEC7612SUW 0x8050
-#define PCI_DEVICE_ID_ARTOP_8060       0x8060
-
-#define PCI_VENDOR_ID_ZEITNET          0x1193
-#define PCI_DEVICE_ID_ZEITNET_1221     0x0001
-#define PCI_DEVICE_ID_ZEITNET_1225     0x0002
-
-#define PCI_VENDOR_ID_OMEGA            0x119b
-#define PCI_DEVICE_ID_OMEGA_82C092G    0x1221
-
-#define PCI_VENDOR_ID_FUJITSU_ME       0x119e
-#define PCI_DEVICE_ID_FUJITSU_FS155    0x0001
-#define PCI_DEVICE_ID_FUJITSU_FS50     0x0003
-
-#define PCI_SUBVENDOR_ID_KEYSPAN       0x11a9
-#define PCI_SUBDEVICE_ID_KEYSPAN_SX2   0x5334
-
-#define PCI_VENDOR_ID_GALILEO          0x11ab
-#define PCI_DEVICE_ID_GALILEO_GT64011  0x4146
-#define PCI_DEVICE_ID_GALILEO_GT64111  0x4146
-#define PCI_DEVICE_ID_GALILEO_GT96100  0x9652
-#define PCI_DEVICE_ID_GALILEO_GT96100A 0x9653
-
-#define PCI_VENDOR_ID_LITEON           0x11ad
-#define PCI_DEVICE_ID_LITEON_LNE100TX  0x0002
-
-#define PCI_VENDOR_ID_V3               0x11b0
-#define PCI_DEVICE_ID_V3_V960          0x0001
-#define PCI_DEVICE_ID_V3_V350          0x0001
-#define PCI_DEVICE_ID_V3_V961          0x0002
-#define PCI_DEVICE_ID_V3_V351          0x0002
-
-#define PCI_VENDOR_ID_NP               0x11bc
-#define PCI_DEVICE_ID_NP_PCI_FDDI      0x0001
-
-#define PCI_VENDOR_ID_ATT              0x11c1
-#define PCI_DEVICE_ID_ATT_L56XMF       0x0440
-#define PCI_DEVICE_ID_ATT_VENUS_MODEM  0x480
-
-#define PCI_VENDOR_ID_SPECIALIX                0x11cb
-#define PCI_DEVICE_ID_SPECIALIX_IO8    0x2000
-#define PCI_DEVICE_ID_SPECIALIX_XIO    0x4000
-#define PCI_DEVICE_ID_SPECIALIX_RIO    0x8000
-#define PCI_SUBDEVICE_ID_SPECIALIX_SPEED4 0xa004
-
-#define PCI_VENDOR_ID_AURAVISION       0x11d1
-#define PCI_DEVICE_ID_AURAVISION_VXP524        0x01f7
-
-#define PCI_VENDOR_ID_ANALOG_DEVICES   0x11d4
-#define PCI_DEVICE_ID_AD1889JS         0x1889
-
-#define PCI_VENDOR_ID_IKON             0x11d5
-#define PCI_DEVICE_ID_IKON_10115       0x0115
-#define PCI_DEVICE_ID_IKON_10117       0x0117
-
-#define PCI_VENDOR_ID_ZORAN            0x11de
-#define PCI_DEVICE_ID_ZORAN_36057      0x6057
-#define PCI_DEVICE_ID_ZORAN_36120      0x6120
-
-#define PCI_VENDOR_ID_KINETIC          0x11f4
-#define PCI_DEVICE_ID_KINETIC_2915     0x2915
-
-#define PCI_VENDOR_ID_COMPEX           0x11f6
-#define PCI_DEVICE_ID_COMPEX_ENET100VG4        0x0112
-#define PCI_DEVICE_ID_COMPEX_RL2000    0x1401
-
-#define PCI_VENDOR_ID_RP               0x11fe
-#define PCI_DEVICE_ID_RP32INTF         0x0001
-#define PCI_DEVICE_ID_RP8INTF          0x0002
-#define PCI_DEVICE_ID_RP16INTF         0x0003
-#define PCI_DEVICE_ID_RP4QUAD          0x0004
-#define PCI_DEVICE_ID_RP8OCTA          0x0005
-#define PCI_DEVICE_ID_RP8J             0x0006
-#define PCI_DEVICE_ID_RPP4             0x000A
-#define PCI_DEVICE_ID_RPP8             0x000B
-#define PCI_DEVICE_ID_RP8M             0x000C
-
-#define PCI_VENDOR_ID_CYCLADES         0x120e
-#define PCI_DEVICE_ID_CYCLOM_Y_Lo      0x0100
-#define PCI_DEVICE_ID_CYCLOM_Y_Hi      0x0101
-#define PCI_DEVICE_ID_CYCLOM_4Y_Lo     0x0102
-#define PCI_DEVICE_ID_CYCLOM_4Y_Hi     0x0103
-#define PCI_DEVICE_ID_CYCLOM_8Y_Lo     0x0104
-#define PCI_DEVICE_ID_CYCLOM_8Y_Hi     0x0105
-#define PCI_DEVICE_ID_CYCLOM_Z_Lo      0x0200
-#define PCI_DEVICE_ID_CYCLOM_Z_Hi      0x0201
-#define PCI_DEVICE_ID_PC300_RX_2       0x0300
-#define PCI_DEVICE_ID_PC300_RX_1       0x0301
-#define PCI_DEVICE_ID_PC300_TE_2       0x0310
-#define PCI_DEVICE_ID_PC300_TE_1       0x0311
-
-#define PCI_VENDOR_ID_ESSENTIAL                0x120f
-#define PCI_DEVICE_ID_ESSENTIAL_ROADRUNNER     0x0001
-
-#define PCI_VENDOR_ID_O2               0x1217
-#define PCI_DEVICE_ID_O2_6729          0x6729
-#define PCI_DEVICE_ID_O2_6730          0x673a
-#define PCI_DEVICE_ID_O2_6832          0x6832
-#define PCI_DEVICE_ID_O2_6836          0x6836
-
-#define PCI_VENDOR_ID_3DFX             0x121a
-#define PCI_DEVICE_ID_3DFX_VOODOO      0x0001
-#define PCI_DEVICE_ID_3DFX_VOODOO2     0x0002
-#define PCI_DEVICE_ID_3DFX_BANSHEE     0x0003
-#define PCI_DEVICE_ID_3DFX_VOODOO3     0x0005
-
-#define PCI_VENDOR_ID_SIGMADES         0x1236
-#define PCI_DEVICE_ID_SIGMADES_6425    0x6401
-
-#define PCI_VENDOR_ID_CCUBE            0x123f
-
-#define PCI_VENDOR_ID_AVM              0x1244
-#define PCI_DEVICE_ID_AVM_B1           0x0700
-#define PCI_DEVICE_ID_AVM_C4           0x0800
-#define PCI_DEVICE_ID_AVM_A1           0x0a00
-#define PCI_DEVICE_ID_AVM_A1_V2                0x0e00
-#define PCI_DEVICE_ID_AVM_C2           0x1100
-#define PCI_DEVICE_ID_AVM_T1           0x1200
-
-#define PCI_VENDOR_ID_DIPIX            0x1246
-
-#define PCI_VENDOR_ID_STALLION         0x124d
-#define PCI_DEVICE_ID_STALLION_ECHPCI832 0x0000
-#define PCI_DEVICE_ID_STALLION_ECHPCI864 0x0002
-#define PCI_DEVICE_ID_STALLION_EIOPCI  0x0003
-
-#define PCI_VENDOR_ID_OPTIBASE         0x1255
-#define PCI_DEVICE_ID_OPTIBASE_FORGE   0x1110
-#define PCI_DEVICE_ID_OPTIBASE_FUSION  0x1210
-#define PCI_DEVICE_ID_OPTIBASE_VPLEX   0x2110
-#define PCI_DEVICE_ID_OPTIBASE_VPLEXCC 0x2120
-#define PCI_DEVICE_ID_OPTIBASE_VQUEST  0x2130
-
-#define PCI_VENDOR_ID_ESS              0x125d
-#define PCI_DEVICE_ID_ESS_ESS1968      0x1968
-#define PCI_DEVICE_ID_ESS_AUDIOPCI     0x1969
-#define PCI_DEVICE_ID_ESS_ESS1978      0x1978
-
-#define PCI_VENDOR_ID_SATSAGEM         0x1267
-#define PCI_DEVICE_ID_SATSAGEM_NICCY   0x1016
-#define PCI_DEVICE_ID_SATSAGEM_PCR2101 0x5352
-#define PCI_DEVICE_ID_SATSAGEM_TELSATTURBO 0x5a4b
-
-#define PCI_VENDOR_ID_HUGHES           0x1273
-#define PCI_DEVICE_ID_HUGHES_DIRECPC   0x0002
-
-#define PCI_VENDOR_ID_ENSONIQ          0x1274
-#define PCI_DEVICE_ID_ENSONIQ_CT5880   0x5880
-#define PCI_DEVICE_ID_ENSONIQ_ES1370   0x5000
-#define PCI_DEVICE_ID_ENSONIQ_ES1371   0x1371
-
-#define PCI_VENDOR_ID_ROCKWELL         0x127A
-
-#define PCI_VENDOR_ID_ITE              0x1283
-#define PCI_DEVICE_ID_ITE_IT8172G      0x8172
-#define PCI_DEVICE_ID_ITE_IT8172G_AUDIO 0x0801
-#define PCI_DEVICE_ID_ITE_8872         0x8872
-
-#define PCI_DEVICE_ID_ITE_IT8330G_0    0xe886
-
-/* formerly Platform Tech */
-#define PCI_VENDOR_ID_ESS_OLD          0x1285
-#define PCI_DEVICE_ID_ESS_ESS0100      0x0100
-
-#define PCI_VENDOR_ID_ALTEON           0x12ae
-#define PCI_DEVICE_ID_ALTEON_ACENIC    0x0001
-
-#define PCI_VENDOR_ID_USR              0x12B9
-
-#define PCI_SUBVENDOR_ID_CONNECT_TECH                  0x12c4
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232          0x0001
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_232          0x0002
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_232          0x0003
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485          0x0004
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485_4_4      0x0005
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_485          0x0006
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_485_2_2      0x0007
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_485          0x0008
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485_2_6      0x0009
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH081101V1       0x000A
-#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH041101V1       0x000B
-
-#define PCI_VENDOR_ID_PICTUREL         0x12c5
-#define PCI_DEVICE_ID_PICTUREL_PCIVST  0x0081
-
-#define PCI_VENDOR_ID_NVIDIA_SGS       0x12d2
-#define PCI_DEVICE_ID_NVIDIA_SGS_RIVA128 0x0018
-
-#define PCI_SUBVENDOR_ID_CHASE_PCIFAST         0x12E0
-#define PCI_SUBDEVICE_ID_CHASE_PCIFAST4                0x0031
-#define PCI_SUBDEVICE_ID_CHASE_PCIFAST8                0x0021
-#define PCI_SUBDEVICE_ID_CHASE_PCIFAST16       0x0011
-#define PCI_SUBDEVICE_ID_CHASE_PCIFAST16FMC    0x0041
-#define PCI_SUBVENDOR_ID_CHASE_PCIRAS          0x124D
-#define PCI_SUBDEVICE_ID_CHASE_PCIRAS4         0xF001
-#define PCI_SUBDEVICE_ID_CHASE_PCIRAS8         0xF010
-
-#define PCI_VENDOR_ID_AUREAL           0x12eb
-#define PCI_DEVICE_ID_AUREAL_VORTEX_1  0x0001
-#define PCI_DEVICE_ID_AUREAL_VORTEX_2  0x0002
-
-#define PCI_VENDOR_ID_CBOARDS          0x1307
-#define PCI_DEVICE_ID_CBOARDS_DAS1602_16 0x0001
-
-#define PCI_VENDOR_ID_SIIG             0x131f
-#define PCI_DEVICE_ID_SIIG_1S_10x_550  0x1000
-#define PCI_DEVICE_ID_SIIG_1S_10x_650  0x1001
-#define PCI_DEVICE_ID_SIIG_1S_10x_850  0x1002
-#define PCI_DEVICE_ID_SIIG_1S1P_10x_550        0x1010
-#define PCI_DEVICE_ID_SIIG_1S1P_10x_650        0x1011
-#define PCI_DEVICE_ID_SIIG_1S1P_10x_850        0x1012
-#define PCI_DEVICE_ID_SIIG_1P_10x      0x1020
-#define PCI_DEVICE_ID_SIIG_2P_10x      0x1021
-#define PCI_DEVICE_ID_SIIG_2S_10x_550  0x1030
-#define PCI_DEVICE_ID_SIIG_2S_10x_650  0x1031
-#define PCI_DEVICE_ID_SIIG_2S_10x_850  0x1032
-#define PCI_DEVICE_ID_SIIG_2S1P_10x_550        0x1034
-#define PCI_DEVICE_ID_SIIG_2S1P_10x_650        0x1035
-#define PCI_DEVICE_ID_SIIG_2S1P_10x_850        0x1036
-#define PCI_DEVICE_ID_SIIG_4S_10x_550  0x1050
-#define PCI_DEVICE_ID_SIIG_4S_10x_650  0x1051
-#define PCI_DEVICE_ID_SIIG_4S_10x_850  0x1052
-#define PCI_DEVICE_ID_SIIG_1S_20x_550  0x2000
-#define PCI_DEVICE_ID_SIIG_1S_20x_650  0x2001
-#define PCI_DEVICE_ID_SIIG_1S_20x_850  0x2002
-#define PCI_DEVICE_ID_SIIG_1P_20x      0x2020
-#define PCI_DEVICE_ID_SIIG_2P_20x      0x2021
-#define PCI_DEVICE_ID_SIIG_2S_20x_550  0x2030
-#define PCI_DEVICE_ID_SIIG_2S_20x_650  0x2031
-#define PCI_DEVICE_ID_SIIG_2S_20x_850  0x2032
-#define PCI_DEVICE_ID_SIIG_2P1S_20x_550        0x2040
-#define PCI_DEVICE_ID_SIIG_2P1S_20x_650        0x2041
-#define PCI_DEVICE_ID_SIIG_2P1S_20x_850        0x2042
-#define PCI_DEVICE_ID_SIIG_1S1P_20x_550        0x2010
-#define PCI_DEVICE_ID_SIIG_1S1P_20x_650        0x2011
-#define PCI_DEVICE_ID_SIIG_1S1P_20x_850        0x2012
-#define PCI_DEVICE_ID_SIIG_4S_20x_550  0x2050
-#define PCI_DEVICE_ID_SIIG_4S_20x_650  0x2051
-#define PCI_DEVICE_ID_SIIG_4S_20x_850  0x2052
-#define PCI_DEVICE_ID_SIIG_2S1P_20x_550        0x2060
-#define PCI_DEVICE_ID_SIIG_2S1P_20x_650        0x2061
-#define PCI_DEVICE_ID_SIIG_2S1P_20x_850        0x2062
-
-#define PCI_VENDOR_ID_DOMEX            0x134a
-#define PCI_DEVICE_ID_DOMEX_DMX3191D   0x0001
-
-#define PCI_VENDOR_ID_QUATECH          0x135C
-#define PCI_DEVICE_ID_QUATECH_QSC100   0x0010
-#define PCI_DEVICE_ID_QUATECH_DSC100   0x0020
-#define PCI_DEVICE_ID_QUATECH_DSC200   0x0030
-#define PCI_DEVICE_ID_QUATECH_QSC200   0x0040
-#define PCI_DEVICE_ID_QUATECH_ESC100D  0x0050
-#define PCI_DEVICE_ID_QUATECH_ESC100M  0x0060
-
-#define PCI_VENDOR_ID_SEALEVEL         0x135e
-#define PCI_DEVICE_ID_SEALEVEL_U530    0x7101
-#define PCI_DEVICE_ID_SEALEVEL_UCOMM2  0x7201
-#define PCI_DEVICE_ID_SEALEVEL_UCOMM422        0x7402
-#define PCI_DEVICE_ID_SEALEVEL_UCOMM232        0x7202
-#define PCI_DEVICE_ID_SEALEVEL_COMM4   0x7401
-#define PCI_DEVICE_ID_SEALEVEL_COMM8   0x7801
-
-#define PCI_VENDOR_ID_HYPERCOPE                0x1365
-#define PCI_DEVICE_ID_HYPERCOPE_PLX    0x9050
-#define PCI_SUBDEVICE_ID_HYPERCOPE_OLD_ERGO    0x0104
-#define PCI_SUBDEVICE_ID_HYPERCOPE_ERGO                0x0106
-#define PCI_SUBDEVICE_ID_HYPERCOPE_METRO       0x0107
-#define PCI_SUBDEVICE_ID_HYPERCOPE_CHAMP2      0x0108
-#define PCI_SUBDEVICE_ID_HYPERCOPE_PLEXUS      0x0109
-
-#define PCI_VENDOR_ID_KAWASAKI         0x136b
-#define PCI_DEVICE_ID_MCHIP_KL5A72002  0xff01
-
-#define PCI_VENDOR_ID_LMC              0x1376
-#define PCI_DEVICE_ID_LMC_HSSI         0x0003
-#define PCI_DEVICE_ID_LMC_DS3          0x0004
-#define PCI_DEVICE_ID_LMC_SSI          0x0005
-#define PCI_DEVICE_ID_LMC_T1           0x0006
-
-#define PCI_VENDOR_ID_NETGEAR          0x1385
-#define PCI_DEVICE_ID_NETGEAR_GA620    0x620a
-#define PCI_DEVICE_ID_NETGEAR_GA622    0x622a
-
-#define PCI_VENDOR_ID_APPLICOM         0x1389
-#define PCI_DEVICE_ID_APPLICOM_PCIGENERIC 0x0001
-#define PCI_DEVICE_ID_APPLICOM_PCI2000IBS_CAN 0x0002
-#define PCI_DEVICE_ID_APPLICOM_PCI2000PFB 0x0003
-
-#define PCI_VENDOR_ID_MOXA             0x1393
-#define PCI_DEVICE_ID_MOXA_C104                0x1040
-#define PCI_DEVICE_ID_MOXA_C168                0x1680
-#define PCI_DEVICE_ID_MOXA_CP204J      0x2040
-#define PCI_DEVICE_ID_MOXA_C218                0x2180
-#define PCI_DEVICE_ID_MOXA_C320                0x3200
-
-#define PCI_VENDOR_ID_CCD              0x1397
-#define PCI_DEVICE_ID_CCD_2BD0         0x2bd0
-#define PCI_DEVICE_ID_CCD_B000         0xb000
-#define PCI_DEVICE_ID_CCD_B006         0xb006
-#define PCI_DEVICE_ID_CCD_B007         0xb007
-#define PCI_DEVICE_ID_CCD_B008         0xb008
-#define PCI_DEVICE_ID_CCD_B009         0xb009
-#define PCI_DEVICE_ID_CCD_B00A         0xb00a
-#define PCI_DEVICE_ID_CCD_B00B         0xb00b
-#define PCI_DEVICE_ID_CCD_B00C         0xb00c
-#define PCI_DEVICE_ID_CCD_B100         0xb100
-
-#define PCI_VENDOR_ID_3WARE            0x13C1
-#define PCI_DEVICE_ID_3WARE_1000       0x1000
-
-#define PCI_VENDOR_ID_ABOCOM           0x13D1
-#define PCI_DEVICE_ID_ABOCOM_2BD1       0x2BD1
-
-#define PCI_VENDOR_ID_CMEDIA           0x13f6
-#define PCI_DEVICE_ID_CMEDIA_CM8338A   0x0100
-#define PCI_DEVICE_ID_CMEDIA_CM8338B   0x0101
-#define PCI_DEVICE_ID_CMEDIA_CM8738    0x0111
-#define PCI_DEVICE_ID_CMEDIA_CM8738B   0x0112
-
-#define PCI_VENDOR_ID_LAVA             0x1407
-#define PCI_DEVICE_ID_LAVA_DSERIAL     0x0100 /* 2x 16550 */
-#define PCI_DEVICE_ID_LAVA_QUATRO_A    0x0101 /* 2x 16550, half of 4 port */
-#define PCI_DEVICE_ID_LAVA_QUATRO_B    0x0102 /* 2x 16550, half of 4 port */
-#define PCI_DEVICE_ID_LAVA_OCTO_A      0x0180 /* 4x 16550A, half of 8 port */
-#define PCI_DEVICE_ID_LAVA_OCTO_B      0x0181 /* 4x 16550A, half of 8 port */
-#define PCI_DEVICE_ID_LAVA_PORT_PLUS   0x0200 /* 2x 16650 */
-#define PCI_DEVICE_ID_LAVA_QUAD_A      0x0201 /* 2x 16650, half of 4 port */
-#define PCI_DEVICE_ID_LAVA_QUAD_B      0x0202 /* 2x 16650, half of 4 port */
-#define PCI_DEVICE_ID_LAVA_SSERIAL     0x0500 /* 1x 16550 */
-#define PCI_DEVICE_ID_LAVA_PORT_650    0x0600 /* 1x 16650 */
-#define PCI_DEVICE_ID_LAVA_PARALLEL    0x8000
-#define PCI_DEVICE_ID_LAVA_DUAL_PAR_A  0x8002 /* The Lava Dual Parallel is */
-#define PCI_DEVICE_ID_LAVA_DUAL_PAR_B  0x8003 /* two PCI devices on a card */
-#define PCI_DEVICE_ID_LAVA_BOCA_IOPPAR 0x8800
-
-#define PCI_VENDOR_ID_TIMEDIA          0x1409
-#define PCI_DEVICE_ID_TIMEDIA_1889     0x7168
-
-#define PCI_VENDOR_ID_OXSEMI           0x1415
-#define PCI_DEVICE_ID_OXSEMI_12PCI840  0x8403
-#define PCI_DEVICE_ID_OXSEMI_16PCI954  0x9501
-#define PCI_DEVICE_ID_OXSEMI_16PCI95N  0x9511
-#define PCI_DEVICE_ID_OXSEMI_16PCI954PP        0x9513
-#define PCI_DEVICE_ID_OXSEMI_16PCI952  0x9521
-
-#define PCI_VENDOR_ID_AIRONET          0x14b9
-#define PCI_DEVICE_ID_AIRONET_4800_1   0x0001
-#define PCI_DEVICE_ID_AIRONET_4800     0x4500 // values switched?  see
-#define PCI_DEVICE_ID_AIRONET_4500     0x4800 // drivers/net/aironet4500_card.c
-
-#define PCI_VENDOR_ID_TITAN            0x14D2
-#define PCI_DEVICE_ID_TITAN_010L       0x8001
-#define PCI_DEVICE_ID_TITAN_100L       0x8010
-#define PCI_DEVICE_ID_TITAN_110L       0x8011
-#define PCI_DEVICE_ID_TITAN_200L       0x8020
-#define PCI_DEVICE_ID_TITAN_210L       0x8021
-#define PCI_DEVICE_ID_TITAN_400L       0x8040
-#define PCI_DEVICE_ID_TITAN_800L       0x8080
-#define PCI_DEVICE_ID_TITAN_100                0xA001
-#define PCI_DEVICE_ID_TITAN_200                0xA005
-#define PCI_DEVICE_ID_TITAN_400                0xA003
-#define PCI_DEVICE_ID_TITAN_800B       0xA004
-
-#define PCI_VENDOR_ID_PANACOM          0x14d4
-#define PCI_DEVICE_ID_PANACOM_QUADMODEM        0x0400
-#define PCI_DEVICE_ID_PANACOM_DUALMODEM        0x0402
-
-#define PCI_VENDOR_ID_AFAVLAB          0x14db
-#define PCI_DEVICE_ID_AFAVLAB_P028     0x2180
-
-#define PCI_VENDOR_ID_BROADCOM         0x14e4
-#define PCI_DEVICE_ID_TIGON3_5700      0x1644
-#define PCI_DEVICE_ID_TIGON3_5701      0x1645
-#define PCI_DEVICE_ID_TIGON3_5702      0x1646
-#define PCI_DEVICE_ID_TIGON3_5703      0x1647
-#define PCI_DEVICE_ID_TIGON3_5704      0x1648
-#define PCI_DEVICE_ID_TIGON3_5702FE    0x164d
-#define PCI_DEVICE_ID_TIGON3_5705      0x1653
-#define PCI_DEVICE_ID_TIGON3_5705_2    0x1654
-#define PCI_DEVICE_ID_TIGON3_5705M     0x165d
-#define PCI_DEVICE_ID_TIGON3_5705M_2   0x165e
-#define PCI_DEVICE_ID_TIGON3_5782      0x1696
-#define PCI_DEVICE_ID_TIGON3_5788      0x169c
-#define PCI_DEVICE_ID_TIGON3_5702X     0x16a6
-#define PCI_DEVICE_ID_TIGON3_5703X     0x16a7
-#define PCI_DEVICE_ID_TIGON3_5704S     0x16a8
-#define PCI_DEVICE_ID_TIGON3_5702A3    0x16c6
-#define PCI_DEVICE_ID_TIGON3_5703A3    0x16c7
-#define PCI_DEVICE_ID_TIGON3_5901      0x170d
-#define PCI_DEVICE_ID_TIGON3_5901_2    0x170e
-#define PCI_DEVICE_ID_BCM4401          0x4401
-
-#define PCI_VENDOR_ID_SYBA             0x1592
-#define PCI_DEVICE_ID_SYBA_2P_EPP      0x0782
-#define PCI_DEVICE_ID_SYBA_1P_ECP      0x0783
-
-#define PCI_VENDOR_ID_MORETON          0x15aa
-#define PCI_DEVICE_ID_RASTEL_2PORT     0x2000
-
-#define PCI_VENDOR_ID_ZOLTRIX          0x15b0
-#define PCI_DEVICE_ID_ZOLTRIX_2BD0     0x2bd0 
-
-#define PCI_VENDOR_ID_PDC              0x15e9
-#define PCI_DEVICE_ID_PDC_ADMA100      0x1841
-
-#define PCI_VENDOR_ID_ALTIMA           0x173b
-#define PCI_DEVICE_ID_ALTIMA_AC1000    0x03e8
-#define PCI_DEVICE_ID_ALTIMA_AC1001    0x03e9
-#define PCI_DEVICE_ID_ALTIMA_AC9100    0x03ea
-#define PCI_DEVICE_ID_ALTIMA_AC1003    0x03eb
-
-#define PCI_VENDOR_ID_SYMPHONY         0x1c1c
-#define PCI_DEVICE_ID_SYMPHONY_101     0x0001
-
-#define PCI_VENDOR_ID_TEKRAM           0x1de1
-#define PCI_DEVICE_ID_TEKRAM_DC290     0xdc29
-
-#define PCI_VENDOR_ID_HINT             0x3388
-#define PCI_DEVICE_ID_HINT_VXPROII_IDE 0x8013
-
-#define PCI_VENDOR_ID_3DLABS           0x3d3d
-#define PCI_DEVICE_ID_3DLABS_300SX     0x0001
-#define PCI_DEVICE_ID_3DLABS_500TX     0x0002
-#define PCI_DEVICE_ID_3DLABS_DELTA     0x0003
-#define PCI_DEVICE_ID_3DLABS_PERMEDIA  0x0004
-#define PCI_DEVICE_ID_3DLABS_MX                0x0006
-#define PCI_DEVICE_ID_3DLABS_PERMEDIA2 0x0007
-#define PCI_DEVICE_ID_3DLABS_GAMMA     0x0008
-#define PCI_DEVICE_ID_3DLABS_PERMEDIA2V        0x0009
-
-#define PCI_VENDOR_ID_AVANCE           0x4005
-#define PCI_DEVICE_ID_AVANCE_ALG2064   0x2064
-#define PCI_DEVICE_ID_AVANCE_2302      0x2302
-
-#define PCI_VENDOR_ID_AKS              0x416c
-#define PCI_DEVICE_ID_AKS_ALADDINCARD  0x0100
-#define PCI_DEVICE_ID_AKS_CPC          0x0200
-
-#define PCI_VENDOR_ID_REDCREEK         0x4916
-#define PCI_DEVICE_ID_RC45             0x1960
-
-#define PCI_VENDOR_ID_NETVIN           0x4a14
-#define PCI_DEVICE_ID_NETVIN_NV5000SC  0x5000
-
-#define PCI_VENDOR_ID_S3               0x5333
-#define PCI_DEVICE_ID_S3_PLATO_PXS     0x0551
-#define PCI_DEVICE_ID_S3_ViRGE         0x5631
-#define PCI_DEVICE_ID_S3_TRIO          0x8811
-#define PCI_DEVICE_ID_S3_AURORA64VP    0x8812
-#define PCI_DEVICE_ID_S3_TRIO64UVP     0x8814
-#define PCI_DEVICE_ID_S3_ViRGE_VX      0x883d
-#define PCI_DEVICE_ID_S3_868           0x8880
-#define PCI_DEVICE_ID_S3_928           0x88b0
-#define PCI_DEVICE_ID_S3_864_1         0x88c0
-#define PCI_DEVICE_ID_S3_864_2         0x88c1
-#define PCI_DEVICE_ID_S3_964_1         0x88d0
-#define PCI_DEVICE_ID_S3_964_2         0x88d1
-#define PCI_DEVICE_ID_S3_968           0x88f0
-#define PCI_DEVICE_ID_S3_TRIO64V2      0x8901
-#define PCI_DEVICE_ID_S3_PLATO_PXG     0x8902
-#define PCI_DEVICE_ID_S3_ViRGE_DXGX    0x8a01
-#define PCI_DEVICE_ID_S3_ViRGE_GX2     0x8a10
-#define PCI_DEVICE_ID_S3_ViRGE_MX      0x8c01
-#define PCI_DEVICE_ID_S3_ViRGE_MXP     0x8c02
-#define PCI_DEVICE_ID_S3_ViRGE_MXPMV   0x8c03
-#define PCI_DEVICE_ID_S3_SONICVIBES    0xca00
-
-#define PCI_VENDOR_ID_DUNORD           0x5544
-#define PCI_DEVICE_ID_DUNORD_I3000     0x0001
-#define PCI_VENDOR_ID_GENROCO          0x5555
-#define PCI_DEVICE_ID_GENROCO_HFP832   0x0003
-
-#define PCI_VENDOR_ID_DCI              0x6666
-#define PCI_DEVICE_ID_DCI_PCCOM4       0x0001
-#define PCI_DEVICE_ID_DCI_PCCOM8       0x0002
-
-#define PCI_VENDOR_ID_INTEL            0x8086
-#define PCI_DEVICE_ID_INTEL_21145      0x0039
-#define PCI_DEVICE_ID_INTEL_82375      0x0482
-#define PCI_DEVICE_ID_INTEL_82424      0x0483
-#define PCI_DEVICE_ID_INTEL_82378      0x0484
-#define PCI_DEVICE_ID_INTEL_82430      0x0486
-#define PCI_DEVICE_ID_INTEL_82434      0x04a3
-#define PCI_DEVICE_ID_INTEL_I960       0x0960
-#define PCI_DEVICE_ID_INTEL_I960RM     0x0962
-#define PCI_DEVICE_ID_INTEL_82562ET    0x1031
-
-#define PCI_DEVICE_ID_INTEL_82815_MC   0x1130
-
-#define PCI_DEVICE_ID_INTEL_82559ER    0x1209
-#define PCI_DEVICE_ID_INTEL_82092AA_0  0x1221
-#define PCI_DEVICE_ID_INTEL_82092AA_1  0x1222
-#define PCI_DEVICE_ID_INTEL_7116       0x1223
-#define PCI_DEVICE_ID_INTEL_7205_0     0x255d
-#define PCI_DEVICE_ID_INTEL_82596      0x1226
-#define PCI_DEVICE_ID_INTEL_82865      0x1227
-#define PCI_DEVICE_ID_INTEL_82557      0x1229
-#define PCI_DEVICE_ID_INTEL_82437      0x122d
-#define PCI_DEVICE_ID_INTEL_82371FB_0  0x122e
-#define PCI_DEVICE_ID_INTEL_82371FB_1  0x1230
-#define PCI_DEVICE_ID_INTEL_82371MX    0x1234
-#define PCI_DEVICE_ID_INTEL_82437MX    0x1235
-#define PCI_DEVICE_ID_INTEL_82441      0x1237
-#define PCI_DEVICE_ID_INTEL_82380FB    0x124b
-#define PCI_DEVICE_ID_INTEL_82439      0x1250
-#define PCI_DEVICE_ID_INTEL_80960_RP   0x1960
-#define PCI_DEVICE_ID_INTEL_82845_HB   0x1a30
-#define PCI_DEVICE_ID_INTEL_82371SB_0  0x7000
-#define PCI_DEVICE_ID_INTEL_82371SB_1  0x7010
-#define PCI_DEVICE_ID_INTEL_82371SB_2  0x7020
-#define PCI_DEVICE_ID_INTEL_82437VX    0x7030
-#define PCI_DEVICE_ID_INTEL_82439TX    0x7100
-#define PCI_DEVICE_ID_INTEL_82371AB_0  0x7110
-#define PCI_DEVICE_ID_INTEL_82371AB    0x7111
-#define PCI_DEVICE_ID_INTEL_82371AB_2  0x7112
-#define PCI_DEVICE_ID_INTEL_82371AB_3  0x7113
-#define PCI_DEVICE_ID_INTEL_82801AA_0  0x2410
-#define PCI_DEVICE_ID_INTEL_82801AA_1  0x2411
-#define PCI_DEVICE_ID_INTEL_82801AA_2  0x2412
-#define PCI_DEVICE_ID_INTEL_82801AA_3  0x2413
-#define PCI_DEVICE_ID_INTEL_82801AA_5  0x2415
-#define PCI_DEVICE_ID_INTEL_82801AA_6  0x2416
-#define PCI_DEVICE_ID_INTEL_82801AA_8  0x2418
-#define PCI_DEVICE_ID_INTEL_82801AB_0  0x2420
-#define PCI_DEVICE_ID_INTEL_82801AB_1  0x2421
-#define PCI_DEVICE_ID_INTEL_82801AB_2  0x2422
-#define PCI_DEVICE_ID_INTEL_82801AB_3  0x2423
-#define PCI_DEVICE_ID_INTEL_82801AB_5  0x2425
-#define PCI_DEVICE_ID_INTEL_82801AB_6  0x2426
-#define PCI_DEVICE_ID_INTEL_82801AB_8  0x2428
-#define PCI_DEVICE_ID_INTEL_82801BA_0  0x2440
-#define PCI_DEVICE_ID_INTEL_82801BA_1  0x2442
-#define PCI_DEVICE_ID_INTEL_82801BA_2  0x2443
-#define PCI_DEVICE_ID_INTEL_82801BA_3  0x2444
-#define PCI_DEVICE_ID_INTEL_82801BA_4  0x2445
-#define PCI_DEVICE_ID_INTEL_82801BA_5  0x2446
-#define PCI_DEVICE_ID_INTEL_82801BA_6  0x2448
-#define PCI_DEVICE_ID_INTEL_82801BA_7  0x2449
-#define PCI_DEVICE_ID_INTEL_82801BA_8  0x244a
-#define PCI_DEVICE_ID_INTEL_82801BA_9  0x244b
-#define PCI_DEVICE_ID_INTEL_82801BA_10 0x244c
-#define PCI_DEVICE_ID_INTEL_82801BA_11 0x244e
-#define PCI_DEVICE_ID_INTEL_82801E_0   0x2450
-#define PCI_DEVICE_ID_INTEL_82801E_2   0x2452
-#define PCI_DEVICE_ID_INTEL_82801E_3   0x2453
-#define PCI_DEVICE_ID_INTEL_82801E_9   0x2459
-#define PCI_DEVICE_ID_INTEL_82801E_11  0x245B
-#define PCI_DEVICE_ID_INTEL_82801E_14  0x245D
-#define PCI_DEVICE_ID_INTEL_82801E_15  0x245E
-#define PCI_DEVICE_ID_INTEL_82801CA_0  0x2480
-#define PCI_DEVICE_ID_INTEL_82801CA_2  0x2482
-#define PCI_DEVICE_ID_INTEL_82801CA_3  0x2483
-#define PCI_DEVICE_ID_INTEL_82801CA_4  0x2484
-#define PCI_DEVICE_ID_INTEL_82801CA_5  0x2485
-#define PCI_DEVICE_ID_INTEL_82801CA_6  0x2486
-#define PCI_DEVICE_ID_INTEL_82801CA_7  0x2487
-#define PCI_DEVICE_ID_INTEL_82801CA_10 0x248a
-#define PCI_DEVICE_ID_INTEL_82801CA_11 0x248b
-#define PCI_DEVICE_ID_INTEL_82801CA_12 0x248c
-#define PCI_DEVICE_ID_INTEL_82801DB_0  0x24c0
-#define PCI_DEVICE_ID_INTEL_82801DB_2  0x24c2
-#define PCI_DEVICE_ID_INTEL_82801DB_3  0x24c3
-#define PCI_DEVICE_ID_INTEL_82801DB_4  0x24c4
-#define PCI_DEVICE_ID_INTEL_82801DB_5  0x24c5
-#define PCI_DEVICE_ID_INTEL_82801DB_6  0x24c6
-#define PCI_DEVICE_ID_INTEL_82801DB_7  0x24c7
-#define PCI_DEVICE_ID_INTEL_82801DB_10 0x24ca
-#define PCI_DEVICE_ID_INTEL_82801DB_11 0x24cb
-#define PCI_DEVICE_ID_INTEL_82801DB_12  0x24cc
-#define PCI_DEVICE_ID_INTEL_82801DB_13 0x24cd
-#define PCI_DEVICE_ID_INTEL_82801EB_0  0x24d0
-#define PCI_DEVICE_ID_INTEL_82801EB_1  0x24d1
-#define PCI_DEVICE_ID_INTEL_82801EB_2  0x24d2
-#define PCI_DEVICE_ID_INTEL_82801EB_3  0x24d3
-#define PCI_DEVICE_ID_INTEL_82801EB_4  0x24d4
-#define PCI_DEVICE_ID_INTEL_82801EB_5  0x24d5
-#define PCI_DEVICE_ID_INTEL_82801EB_6  0x24d6
-#define PCI_DEVICE_ID_INTEL_82801EB_7  0x24d7
-#define PCI_DEVICE_ID_INTEL_82801DB_10 0x24ca
-#define PCI_DEVICE_ID_INTEL_82801EB_11 0x24db
-#define PCI_DEVICE_ID_INTEL_82801EB_13 0x24dd
-#define PCI_DEVICE_ID_INTEL_ESB_0      0x25a0
-#define PCI_DEVICE_ID_INTEL_ESB_1      0x25a1
-#define PCI_DEVICE_ID_INTEL_ESB_2      0x25a2
-#define PCI_DEVICE_ID_INTEL_ESB_3      0x25a3
-#define PCI_DEVICE_ID_INTEL_ESB_31     0x25b0
-#define PCI_DEVICE_ID_INTEL_ESB_4      0x25a4
-#define PCI_DEVICE_ID_INTEL_ESB_5      0x25a6
-#define PCI_DEVICE_ID_INTEL_ESB_6      0x25a7
-#define PCI_DEVICE_ID_INTEL_ESB_7      0x25a9
-#define PCI_DEVICE_ID_INTEL_ESB_8      0x25aa
-#define PCI_DEVICE_ID_INTEL_ESB_9      0x25ab
-#define PCI_DEVICE_ID_INTEL_ESB_11     0x25ac
-#define PCI_DEVICE_ID_INTEL_ESB_12     0x25ad
-#define PCI_DEVICE_ID_INTEL_ESB_13     0x25ae
-#define PCI_DEVICE_ID_INTEL_82850_HB   0x2530
-#define PCI_DEVICE_ID_INTEL_82845G_HB  0x2560
-#define PCI_DEVICE_ID_INTEL_80310      0x530d
-#define PCI_DEVICE_ID_INTEL_82810_MC1  0x7120
-#define PCI_DEVICE_ID_INTEL_82810_IG1  0x7121
-#define PCI_DEVICE_ID_INTEL_82810_MC3  0x7122
-#define PCI_DEVICE_ID_INTEL_82810_IG3  0x7123
-#define PCI_DEVICE_ID_INTEL_82443LX_0  0x7180
-#define PCI_DEVICE_ID_INTEL_82443LX_1  0x7181
-#define PCI_DEVICE_ID_INTEL_82443BX_0  0x7190
-#define PCI_DEVICE_ID_INTEL_82443BX_1  0x7191
-#define PCI_DEVICE_ID_INTEL_82443BX_2  0x7192
-#define PCI_DEVICE_ID_INTEL_82443MX_0  0x7198
-#define PCI_DEVICE_ID_INTEL_82443MX_1  0x7199
-#define PCI_DEVICE_ID_INTEL_82443MX_2  0x719a
-#define PCI_DEVICE_ID_INTEL_82443MX_3  0x719b
-#define PCI_DEVICE_ID_INTEL_82443GX_0  0x71a0
-#define PCI_DEVICE_ID_INTEL_82443GX_1  0x71a1
-#define PCI_DEVICE_ID_INTEL_82443GX_2  0x71a2
-#define PCI_DEVICE_ID_INTEL_82372FB_0  0x7600
-#define PCI_DEVICE_ID_INTEL_82372FB_1  0x7601
-#define PCI_DEVICE_ID_INTEL_82372FB_2  0x7602
-#define PCI_DEVICE_ID_INTEL_82372FB_3  0x7603
-#define PCI_DEVICE_ID_INTEL_82454GX    0x84c4
-#define PCI_DEVICE_ID_INTEL_82450GX    0x84c5
-#define PCI_DEVICE_ID_INTEL_82451NX    0x84ca
-#define PCI_DEVICE_ID_INTEL_82454NX    0x84cb
-
-#define PCI_VENDOR_ID_COMPUTONE                0x8e0e
-#define PCI_DEVICE_ID_COMPUTONE_IP2EX  0x0291
-#define PCI_DEVICE_ID_COMPUTONE_PG     0x0302
-#define PCI_SUBVENDOR_ID_COMPUTONE     0x8e0e
-#define PCI_SUBDEVICE_ID_COMPUTONE_PG4 0x0001
-#define PCI_SUBDEVICE_ID_COMPUTONE_PG8 0x0002
-#define PCI_SUBDEVICE_ID_COMPUTONE_PG6 0x0003
-
-#define PCI_VENDOR_ID_KTI              0x8e2e
-#define PCI_DEVICE_ID_KTI_ET32P2       0x3000
-
-#define PCI_VENDOR_ID_ADAPTEC          0x9004
-#define PCI_DEVICE_ID_ADAPTEC_7810     0x1078
-#define PCI_DEVICE_ID_ADAPTEC_7821     0x2178
-#define PCI_DEVICE_ID_ADAPTEC_38602    0x3860
-#define PCI_DEVICE_ID_ADAPTEC_7850     0x5078
-#define PCI_DEVICE_ID_ADAPTEC_7855     0x5578
-#define PCI_DEVICE_ID_ADAPTEC_5800     0x5800
-#define PCI_DEVICE_ID_ADAPTEC_3860     0x6038
-#define PCI_DEVICE_ID_ADAPTEC_1480A    0x6075
-#define PCI_DEVICE_ID_ADAPTEC_7860     0x6078
-#define PCI_DEVICE_ID_ADAPTEC_7861     0x6178
-#define PCI_DEVICE_ID_ADAPTEC_7870     0x7078
-#define PCI_DEVICE_ID_ADAPTEC_7871     0x7178
-#define PCI_DEVICE_ID_ADAPTEC_7872     0x7278
-#define PCI_DEVICE_ID_ADAPTEC_7873     0x7378
-#define PCI_DEVICE_ID_ADAPTEC_7874     0x7478
-#define PCI_DEVICE_ID_ADAPTEC_7895     0x7895
-#define PCI_DEVICE_ID_ADAPTEC_7880     0x8078
-#define PCI_DEVICE_ID_ADAPTEC_7881     0x8178
-#define PCI_DEVICE_ID_ADAPTEC_7882     0x8278
-#define PCI_DEVICE_ID_ADAPTEC_7883     0x8378
-#define PCI_DEVICE_ID_ADAPTEC_7884     0x8478
-#define PCI_DEVICE_ID_ADAPTEC_7885     0x8578
-#define PCI_DEVICE_ID_ADAPTEC_7886     0x8678
-#define PCI_DEVICE_ID_ADAPTEC_7887     0x8778
-#define PCI_DEVICE_ID_ADAPTEC_7888     0x8878
-#define PCI_DEVICE_ID_ADAPTEC_1030     0x8b78
-
-#define PCI_VENDOR_ID_ADAPTEC2         0x9005
-#define PCI_DEVICE_ID_ADAPTEC2_2940U2  0x0010
-#define PCI_DEVICE_ID_ADAPTEC2_2930U2  0x0011
-#define PCI_DEVICE_ID_ADAPTEC2_7890B   0x0013
-#define PCI_DEVICE_ID_ADAPTEC2_7890    0x001f
-#define PCI_DEVICE_ID_ADAPTEC2_3940U2  0x0050
-#define PCI_DEVICE_ID_ADAPTEC2_3950U2D 0x0051
-#define PCI_DEVICE_ID_ADAPTEC2_7896    0x005f
-#define PCI_DEVICE_ID_ADAPTEC2_7892A   0x0080
-#define PCI_DEVICE_ID_ADAPTEC2_7892B   0x0081
-#define PCI_DEVICE_ID_ADAPTEC2_7892D   0x0083
-#define PCI_DEVICE_ID_ADAPTEC2_7892P   0x008f
-#define PCI_DEVICE_ID_ADAPTEC2_7899A   0x00c0
-#define PCI_DEVICE_ID_ADAPTEC2_7899B   0x00c1
-#define PCI_DEVICE_ID_ADAPTEC2_7899D   0x00c3
-#define PCI_DEVICE_ID_ADAPTEC2_7899P   0x00cf
-
-#define PCI_VENDOR_ID_ATRONICS         0x907f
-#define PCI_DEVICE_ID_ATRONICS_2015    0x2015
-
-#define PCI_VENDOR_ID_HOLTEK           0x9412
-#define PCI_DEVICE_ID_HOLTEK_6565      0x6565
-
-#define PCI_VENDOR_ID_NETMOS           0x9710
-#define PCI_DEVICE_ID_NETMOS_9735      0x9735
-#define PCI_DEVICE_ID_NETMOS_9835      0x9835
-
-#define PCI_SUBVENDOR_ID_EXSYS         0xd84d
-#define PCI_SUBDEVICE_ID_EXSYS_4014    0x4014
-
-#define PCI_VENDOR_ID_TIGERJET         0xe159
-#define PCI_DEVICE_ID_TIGERJET_300     0x0001
-#define PCI_DEVICE_ID_TIGERJET_100     0x0002
-
-#define PCI_VENDOR_ID_ARK              0xedd8
-#define PCI_DEVICE_ID_ARK_STING                0xa091
-#define PCI_DEVICE_ID_ARK_STINGARK     0xa099
-#define PCI_DEVICE_ID_ARK_2000MT       0xa0a1
-
-#define PCI_VENDOR_ID_MICROGATE                0x13c0
-#define PCI_DEVICE_ID_MICROGATE_USC    0x0010
-#define PCI_DEVICE_ID_MICROGATE_SCC    0x0020
-#define PCI_DEVICE_ID_MICROGATE_SCA    0x0030
diff --git a/xen/include/xeno/perfc.h b/xen/include/xeno/perfc.h
deleted file mode 100644 (file)
index 9ea244b..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-
-#ifndef __XENO_PERFC_H__
-#define __XENO_PERFC_H__
-
-#include <asm/atomic.h>
-
-/* 
- * NOTE: new counters must be defined in perfc_defn.h
- * 
- * PERFCOUNTER (counter, string)              define a new performance counter
- * PERFCOUNTER_CPU (counter, string, size)    define a counter per CPU
- * PERFCOUNTER_ARRY (counter, string, size)   define an array of counters
- * 
- * unsigned long perfc_value  (counter)        get value of a counter  
- * unsigned long perfc_valuec (counter)        get value of a per CPU counter
- * unsigned long perfc_valuea (counter, index) get value of an array counter
- * unsigned long perfc_set  (counter, val)     set value of a counter  
- * unsigned long perfc_setc (counter, val)     set value of a per CPU counter
- * unsigned long perfc_seta (counter, index, val) set value of an array counter
- * void perfc_incr  (counter)                  increment a counter          
- * void perfc_incrc (counter, index)           increment a per CPU counter   
- * void perfc_incra (counter, index)           increment an array counter   
- * void perfc_add   (counter, value)           add a value to a counter     
- * void perfc_addc  (counter, value)           add a value to a per CPU counter
- * void perfc_adda  (counter, index, value)    add a value to array counter 
- * void perfc_print (counter)                  print out the counter
- */
-
-#define PERFCOUNTER( var, name ) \
-  atomic_t var[1];
-#define PERFCOUNTER_CPU( var, name ) \
-  atomic_t var[NR_CPUS];
-#define PERFCOUNTER_ARRAY( var, name, size ) \
-  atomic_t var[size];
-
-struct perfcounter_t 
-{
-#include <xeno/perfc_defn.h>
-};
-
-extern struct perfcounter_t perfcounters;
-
-#define perfc_value(x)    atomic_read(&perfcounters.x[0])
-#define perfc_valuec(x)   atomic_read(&perfcounters.x[smp_processor_id()])
-#define perfc_valuea(x,y) atomic_read(&perfcounters.x[y])
-#define perfc_set(x,v)    atomic_set(&perfcounters.x[0], v)
-#define perfc_setc(x,v)   atomic_set(&perfcounters.x[smp_processor_id()], v)
-#define perfc_seta(x,y,v) atomic_set(&perfcounters.x[y], v)
-#define perfc_incr(x)     atomic_inc(&perfcounters.x[0])
-#define perfc_incrc(x)    atomic_inc(&perfcounters.x[smp_processor_id()])
-#define perfc_incra(x,y)  atomic_inc(&perfcounters.x[y])
-#define perfc_add(x,y)    atomic_add((y), &perfcounters.x[0])
-#define perfc_addc(x,y)   atomic_add((y), &perfcounters.x[smp_processor_id()])
-#define perfc_adda(x,y,z) atomic_add((z), &perfcounters.x[y])
-
-#endif /* __XENO_PERFC_H__ */
diff --git a/xen/include/xeno/perfc_defn.h b/xen/include/xeno/perfc_defn.h
deleted file mode 100644 (file)
index f81b5bc..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-PERFCOUNTER_CPU( irqs,         "#interrupts" )
-PERFCOUNTER_CPU( irq_time,     "cycles spent in irq handler" )
-
-PERFCOUNTER_CPU( apic_timer,   "apic timer interrupts" )
-PERFCOUNTER_CPU( ac_timer_max, "ac_timer max error (ns)" )
-PERFCOUNTER_CPU( sched_irq,    "sched: timer" )
-PERFCOUNTER_CPU( sched_run,    "sched: runs through scheduler" )
-PERFCOUNTER_CPU( sched_ctx,    "sched: context switches" )
-
-PERFCOUNTER( net_hypercalls, "network hypercalls" )
-PERFCOUNTER( net_rx_congestion_drop, "net rx congestion drops" )
-PERFCOUNTER( net_rx_capacity_drop, "net rx capacity drops" )
-PERFCOUNTER( net_rx_delivered, "net rx delivered" )
-PERFCOUNTER( net_tx_transmitted, "net tx transmitted" )
-
-PERFCOUNTER_CPU( domain_page_tlb_flush, "domain page tlb flushes" )
-PERFCOUNTER_CPU( need_flush_tlb_flush, "PG_need_flush tlb flushes" )
-
-PERFCOUNTER_CPU( calls_to_mmu_update, "calls_to_mmu_update" )
-PERFCOUNTER_CPU( num_page_updates, "num_page_updates" )
-
-
-
diff --git a/xen/include/xeno/prefetch.h b/xen/include/xeno/prefetch.h
deleted file mode 100644 (file)
index 8d7d3ff..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  Generic cache management functions. Everything is arch-specific,  
- *  but this header exists to make sure the defines/functions can be
- *  used in a generic way.
- *
- *  2000-11-13  Arjan van de Ven   <arjan@fenrus.demon.nl>
- *
- */
-
-#ifndef _LINUX_PREFETCH_H
-#define _LINUX_PREFETCH_H
-
-#include <asm/processor.h>
-#include <asm/cache.h>
-
-/*
-       prefetch(x) attempts to pre-emptively get the memory pointed to
-       by address "x" into the CPU L1 cache. 
-       prefetch(x) should not cause any kind of exception, prefetch(0) is
-       specifically ok.
-
-       prefetch() should be defined by the architecture, if not, the 
-       #define below provides a no-op define.  
-       
-       There are 3 prefetch() macros:
-       
-       prefetch(x)     - prefetches the cacheline at "x" for read
-       prefetchw(x)    - prefetches the cacheline at "x" for write
-       spin_lock_prefetch(x) - prefectches the spinlock *x for taking
-       
-       there is also PREFETCH_STRIDE which is the architecure-prefered 
-       "lookahead" size for prefetching streamed operations.
-       
-*/
-
-/*
- *     These cannot be do{}while(0) macros. See the mental gymnastics in
- *     the loop macro.
- */
-#ifndef ARCH_HAS_PREFETCH
-#define ARCH_HAS_PREFETCH
-static inline void prefetch(const void *x) {;}
-#endif
-
-#ifndef ARCH_HAS_PREFETCHW
-#define ARCH_HAS_PREFETCHW
-static inline void prefetchw(const void *x) {;}
-#endif
-
-#ifndef ARCH_HAS_SPINLOCK_PREFETCH
-#define ARCH_HAS_SPINLOCK_PREFETCH
-#define spin_lock_prefetch(x) prefetchw(x)
-#endif
-
-#ifndef PREFETCH_STRIDE
-#define PREFETCH_STRIDE (4*L1_CACHE_BYTES)
-#endif
-
-#endif
diff --git a/xen/include/xeno/rbtree.h b/xen/include/xeno/rbtree.h
deleted file mode 100644 (file)
index 5d77f1c..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-  Red Black Trees
-  (C) 1999  Andrea Arcangeli <andrea@suse.de>
-  
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program; if not, write to the Free Software
-  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-  linux/include/linux/rbtree.h
-
-  To use rbtrees you'll have to implement your own insert and search cores.
-  This will avoid us to use callbacks and to drop drammatically performances.
-  I know it's not the cleaner way,  but in C (not in C++) to get
-  performances and genericity...
-
-  Some example of insert and search follows here. The search is a plain
-  normal search over an ordered tree. The insert instead must be implemented
-  int two steps: as first thing the code must insert the element in
-  order as a red leaf in the tree, then the support library function
-  rb_insert_color() must be called. Such function will do the
-  not trivial work to rebalance the rbtree if necessary.
-
------------------------------------------------------------------------
-static inline struct page * rb_search_page_cache(struct inode * inode,
-                                                unsigned long offset)
-{
-       rb_node_t * n = inode->i_rb_page_cache.rb_node;
-       struct page * page;
-
-       while (n)
-       {
-               page = rb_entry(n, struct page, rb_page_cache);
-
-               if (offset < page->offset)
-                       n = n->rb_left;
-               else if (offset > page->offset)
-                       n = n->rb_right;
-               else
-                       return page;
-       }
-       return NULL;
-}
-
-static inline struct page * __rb_insert_page_cache(struct inode * inode,
-                                                  unsigned long offset,
-                                                  rb_node_t * node)
-{
-       rb_node_t ** p = &inode->i_rb_page_cache.rb_node;
-       rb_node_t * parent = NULL;
-       struct page * page;
-
-       while (*p)
-       {
-               parent = *p;
-               page = rb_entry(parent, struct page, rb_page_cache);
-
-               if (offset < page->offset)
-                       p = &(*p)->rb_left;
-               else if (offset > page->offset)
-                       p = &(*p)->rb_right;
-               else
-                       return page;
-       }
-
-       rb_link_node(node, parent, p);
-
-       return NULL;
-}
-
-static inline struct page * rb_insert_page_cache(struct inode * inode,
-                                                unsigned long offset,
-                                                rb_node_t * node)
-{
-       struct page * ret;
-       if ((ret = __rb_insert_page_cache(inode, offset, node)))
-               goto out;
-       rb_insert_color(node, &inode->i_rb_page_cache);
- out:
-       return ret;
-}
------------------------------------------------------------------------
-*/
-
-#ifndef        _LINUX_RBTREE_H
-#define        _LINUX_RBTREE_H
-
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/module.h>
-
-typedef struct rb_node_s
-{
-       struct rb_node_s * rb_parent;
-       int rb_color;
-#define        RB_RED          0
-#define        RB_BLACK        1
-       struct rb_node_s * rb_right;
-       struct rb_node_s * rb_left;
-}
-rb_node_t;
-
-typedef struct rb_root_s
-{
-       struct rb_node_s * rb_node;
-}
-rb_root_t;
-
-#define RB_ROOT        (rb_root_t) { NULL, }
-#define        rb_entry(ptr, type, member)                                     \
-       ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
-
-extern void rb_insert_color(rb_node_t *, rb_root_t *);
-extern void rb_erase(rb_node_t *, rb_root_t *);
-
-static inline void rb_link_node(rb_node_t * node, rb_node_t * parent, rb_node_t ** rb_link)
-{
-       node->rb_parent = parent;
-       node->rb_color = RB_RED;
-       node->rb_left = node->rb_right = NULL;
-
-       *rb_link = node;
-}
-
-#endif /* _LINUX_RBTREE_H */
diff --git a/xen/include/xeno/reboot.h b/xen/include/xeno/reboot.h
deleted file mode 100644 (file)
index 6705139..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef _LINUX_REBOOT_H
-#define _LINUX_REBOOT_H
-
-/*
- * Magic values required to use _reboot() system call.
- */
-
-#define        LINUX_REBOOT_MAGIC1     0xfee1dead
-#define        LINUX_REBOOT_MAGIC2     672274793
-#define        LINUX_REBOOT_MAGIC2A    85072278
-#define        LINUX_REBOOT_MAGIC2B    369367448
-
-
-/*
- * Commands accepted by the _reboot() system call.
- *
- * RESTART     Restart system using default command and mode.
- * HALT        Stop OS and give system control to ROM monitor, if any.
- * CAD_ON      Ctrl-Alt-Del sequence causes RESTART command.
- * CAD_OFF     Ctrl-Alt-Del sequence sends SIGINT to init task.
- * POWER_OFF   Stop OS and remove all power from system, if possible.
- * RESTART2    Restart system using given command string.
- */
-
-#define        LINUX_REBOOT_CMD_RESTART        0x01234567
-#define        LINUX_REBOOT_CMD_HALT           0xCDEF0123
-#define        LINUX_REBOOT_CMD_CAD_ON         0x89ABCDEF
-#define        LINUX_REBOOT_CMD_CAD_OFF        0x00000000
-#define        LINUX_REBOOT_CMD_POWER_OFF      0x4321FEDC
-#define        LINUX_REBOOT_CMD_RESTART2       0xA1B2C3D4
-
-
-#ifdef __KERNEL__
-
-#include <xeno/notifier.h>
-
-extern int register_reboot_notifier(struct notifier_block *);
-extern int unregister_reboot_notifier(struct notifier_block *);
-
-
-/*
- * Architecture-specific implementations of sys_reboot commands.
- */
-
-extern void machine_restart(char *cmd);
-extern void machine_halt(void);
-extern void machine_power_off(void);
-
-#endif
-
-#endif /* _LINUX_REBOOT_H */
diff --git a/xen/include/xeno/sched-if.h b/xen/include/xeno/sched-if.h
deleted file mode 100644 (file)
index 683e73d..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#include <asm/types.h>
-
-/*
- * Additional declarations for the generic scheduler interface.  This should
- * only be included by files that implement conforming schedulers.
- *
- * Portions by Mark Williamson are (C) 2004 Intel Research Cambridge
- */
-
-#define BUCKETS 10
-
-typedef struct schedule_data_st
-{
-    struct list_head    runqueue;       /* runqueue */
-    struct task_struct *curr;           /* current task */
-    struct task_struct *idle;           /* idle task for this cpu */
-    void *              sched_priv;
-    struct ac_timer     s_timer;        /* scheduling timer  */
-#ifdef BUCKETS
-    u32                 hist[BUCKETS];  /* for scheduler latency histogram */
-#endif
-} __cacheline_aligned schedule_data_t;
-
-
-typedef struct task_slice_st
-{
-    struct task_struct *task;
-    s_time_t            time;
-} task_slice_t;
-
-struct scheduler
-{
-    char *name;             /* full name for this scheduler      */
-    char *opt_name;         /* option name for this scheduler    */
-    unsigned int sched_id;  /* ID for this scheduler             */
-
-    int          (*init_scheduler) ();
-    int          (*alloc_task)     (struct task_struct *);
-    void         (*add_task)       (struct task_struct *);
-    void         (*free_task)      (struct task_struct *);
-    void         (*rem_task)       (struct task_struct *);
-    void         (*wake_up)        (struct task_struct *);
-    /* XXX why does do_block need to return anything at all? */
-    long         (*do_block)       (struct task_struct *);
-    task_slice_t (*do_schedule)    (s_time_t);
-    int          (*control)        (struct sched_ctl_cmd *);
-    int          (*adjdom)         (struct task_struct *,
-                                    struct sched_adjdom_cmd *);
-    s32          (*reschedule)     (struct task_struct *);
-    void         (*dump_settings)  (void);
-    void         (*dump_cpu_state) (int);
-    void         (*dump_runq_el)   (struct task_struct *);
-};
-
-/* per CPU scheduler information */
-extern schedule_data_t schedule_data[];
-
-/*
- * Wrappers for run-queue management. Must be called with the schedule_lock
- * held.
- */
-static inline void __add_to_runqueue_head(struct task_struct * p)
-{    
-    list_add(&p->run_list, &schedule_data[p->processor].runqueue);
-}
-
-static inline void __add_to_runqueue_tail(struct task_struct * p)
-{
-    list_add_tail(&p->run_list, &schedule_data[p->processor].runqueue);
-}
-
-static inline void __del_from_runqueue(struct task_struct * p)
-{
-    list_del(&p->run_list);
-    p->run_list.next = NULL;
-}
-
-static inline int __task_on_runqueue(struct task_struct *p)
-{
-    return p->run_list.next != NULL;
-}
-
-#define next_domain(p) \\
-        list_entry((p)->run_list.next, struct task_struct, run_list)
-
-
-static inline int __runqueue_empty(int cpu)
-{
-    return list_empty(&schedule_data[cpu].runqueue);
-}
diff --git a/xen/include/xeno/sched.h b/xen/include/xeno/sched.h
deleted file mode 100644 (file)
index dea80d0..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-#ifndef _LINUX_SCHED_H
-#define _LINUX_SCHED_H
-
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/spinlock.h>
-#include <asm/ptrace.h>
-#include <xeno/smp.h>
-#include <asm/page.h>
-#include <asm/processor.h>
-#include <hypervisor-ifs/hypervisor-if.h>
-#include <hypervisor-ifs/dom0_ops.h>
-
-#include <xeno/list.h>
-#include <xeno/time.h>
-#include <xeno/ac_timer.h>
-#include <xeno/delay.h>
-#include <xeno/rbtree.h>
-
-#define STACK_SIZE (2*PAGE_SIZE)
-#include <asm/current.h>
-
-#define MAX_DOMAIN_NAME 16
-
-extern unsigned long volatile jiffies;
-extern rwlock_t tasklist_lock;
-
-extern struct timeval xtime;
-
-#include <xeno/spinlock.h>
-
-extern struct mm_struct init_mm;
-
-#define _HYP_EVENT_NEED_RESCHED 0
-#define _HYP_EVENT_DIE          1
-
-#define PF_DONEFPUINIT  0 /* Has the FPU been initialised for this task? */
-#define PF_USEDFPU      1 /* Has this task used the FPU since last save? */
-#define PF_GUEST_STTS   2 /* Has the guest OS requested 'stts'?          */
-#define PF_CONSTRUCTED  3 /* Has the guest OS been fully built yet?      */
-#define PF_IDLETASK     4 /* Is this one of the per-CPU idle domains?    */
-#define PF_PRIVILEGED   5 /* Is this domain privileged?                  */
-#define PF_CONSOLEWRITEBUG 6 /* Has this domain used the obsolete console? */
-
-#include <xeno/vif.h>
-#include <xeno/vbd.h>
-
-#define IS_PRIV(_p) (test_bit(PF_PRIVILEGED, &(_p)->flags))
-
-struct task_struct;
-
-typedef struct event_channel_st
-{
-    struct task_struct *remote_dom;
-    u16                 remote_port;
-#define ECS_FREE         0 /* Available for use.                            */
-#define ECS_DISCONNECTED 1 /* Connection is closed. Remote is disconnected. */
-#define ECS_CONNECTED    2 /* Connected to remote end.                      */
-    u16                 state;
-} event_channel_t;
-
-struct task_struct 
-{
-    /*
-     * DO NOT CHANGE THE ORDER OF THE FOLLOWING.
-     * Their offsets are hardcoded in entry.S
-     */
-
-    unsigned short processor;    /* 00: current processor */
-    unsigned short hyp_events;   /* 02: pending intra-Xen events */
-
-    /* An unsafe pointer into a shared data area. */
-    shared_info_t *shared_info;  /* 04: shared data area */
-
-    /*
-     * Return vectors pushed to us by guest OS.
-     * The stack frame for events is exactly that of an x86 hardware interrupt.
-     * The stack frame for a failsafe callback is augmented with saved values
-     * for segment registers %ds, %es, %fs and %gs:
-     *         %ds, %es, %fs, %gs, %eip, %cs, %eflags [, %oldesp, %oldss]
-     */
-    unsigned long event_selector;    /* 08: entry CS  */
-    unsigned long event_address;     /* 12: entry EIP */
-
-    /* Saved DS,ES,FS,GS immediately before return to guest OS. */
-    unsigned long failsafe_selectors[4]; /* 16-32 */ 
-
-    /*
-     * END OF FIRST CACHELINE. Stuff above is touched a lot!
-     */
-
-    unsigned long failsafe_selector; /* 32: entry CS  */
-    unsigned long failsafe_address;  /* 36: entry EIP */
-
-    /*
-     * From here on things can be added and shuffled without special attention
-     */
-
-    domid_t domain;
-
-    spinlock_t       page_list_lock;
-    struct list_head page_list;
-    unsigned int     tot_pages; /* number of pages currently possesed */
-    unsigned int     max_pages; /* max number of pages that can be possesed */
-
-    /* Scheduling. */
-    struct list_head run_list;
-    int              has_cpu;
-    int              state;         /* current run state */
-    int              cpupinned;     /* true if pinned to curent CPU */
-    s_time_t         lastschd;      /* time this domain was last scheduled */
-    s_time_t         lastdeschd;    /* time this domain was last descheduled */
-    s_time_t         cpu_time;      /* total CPU time received till now */
-    s_time_t         wokenup;       /* time domain got woken up */
-    struct ac_timer  timer;         /* one-shot timer for timeout values */
-
-    s_time_t         min_slice;     /* minimum time before reschedule */
-
-    void *sched_priv;               /* scheduler-specific data */
-
-    /* Network I/O */
-    net_vif_t *net_vif_list[MAX_DOMAIN_VIFS];
-
-    /* Block I/O */
-    blk_ring_t *blk_ring_base;
-    BLK_RING_IDX blk_req_cons;  /* request consumer */
-    BLK_RING_IDX blk_resp_prod; /* (private version of) response producer */
-    struct list_head blkdev_list;
-    spinlock_t blk_ring_lock;
-    rb_root_t  vbd_rb;          /* mapping from 16-bit vdevices to vbds */
-    spinlock_t vbd_lock;        /* protects VBD mapping */
-
-    /* VM */
-    struct mm_struct mm;
-
-    mm_segment_t addr_limit;
-
-    char name[MAX_DOMAIN_NAME];
-
-    struct thread_struct thread;
-    struct task_struct *next_list, *next_hash;
-
-    /* Event channel information. */
-    event_channel_t *event_channel;
-    unsigned int     max_event_channel;
-    spinlock_t       event_channel_lock;
-
-    /* Physical I/O */
-    spinlock_t       pcidev_lock;
-    struct list_head pcidev_list;
-
-    unsigned long flags;
-
-    atomic_t refcnt;
-};
-
-/*
- * domain states 
- * TASK_RUNNING:         Domain is runable and should be on a run queue
- * TASK_INTERRUPTIBLE:   Domain is blocked by may be woken up by an event
- *                       or expiring timer
- * TASK_UNINTERRUPTIBLE: Domain is blocked but may not be woken up by an
- *                       arbitrary event or timer.
- * TASK_STOPPED:         Domain is stopped.
- * TASK_DYING:           Domain is about to cross over to the land of the dead.
- */
-
-#define TASK_RUNNING             0
-#define TASK_INTERRUPTIBLE       1
-#define TASK_UNINTERRUPTIBLE     2
-#define TASK_STOPPED             4
-#define TASK_DYING               8
-#define TASK_SCHED_PRIV          16
-
-#include <asm/uaccess.h> /* for KERNEL_DS */
-
-#define IDLE0_TASK(_t)           \
-{                                \
-    processor:   0,              \
-    domain:      IDLE_DOMAIN_ID, \
-    state:       TASK_RUNNING,   \
-    has_cpu:     0,              \
-    mm:          IDLE0_MM,       \
-    addr_limit:  KERNEL_DS,      \
-    thread:      INIT_THREAD,    \
-    flags:       1<<PF_IDLETASK  \
-}
-
-extern struct task_struct idle0_task;
-
-extern struct task_struct *idle_task[NR_CPUS];
-#define IDLE_DOMAIN_ID   (~0ULL)
-#define is_idle_task(_p) (test_bit(PF_IDLETASK, &(_p)->flags))
-
-#include <xeno/slab.h>
-
-void free_task_struct(struct task_struct *p);
-struct task_struct *alloc_task_struct();
-
-#define put_task_struct(_p) \
-  if ( atomic_dec_and_test(&(_p)->refcnt) ) release_task(_p)
-#define get_task_struct(_p)  \
-  atomic_inc(&(_p)->refcnt)
-
-extern struct task_struct *do_createdomain(
-    domid_t dom_id, unsigned int cpu);
-extern int setup_guestos(
-    struct task_struct *p, dom0_createdomain_t *params, unsigned int num_vifs,
-    char *data_start, unsigned long data_len, 
-    char *cmdline, unsigned long initrd_len);
-extern int final_setup_guestos(struct task_struct *p, dom0_builddomain_t *);
-
-struct task_struct *find_domain_by_id(domid_t dom);
-extern void release_task(struct task_struct *);
-extern void __kill_domain(struct task_struct *p);
-extern void kill_domain(void);
-extern void kill_domain_with_errmsg(const char *err);
-extern long kill_other_domain(domid_t dom, int force);
-extern void stop_domain(void);
-extern long stop_other_domain(domid_t dom);
-
-/* arch/process.c */
-void new_thread(struct task_struct *p,
-                unsigned long start_pc,
-                unsigned long start_stack,
-                unsigned long start_info);
-
-/* Linux puts these here for some reason! */
-extern int request_irq(unsigned int,
-                       void (*handler)(int, void *, struct pt_regs *),
-                       unsigned long, const char *, void *);
-extern void free_irq(unsigned int, void *);
-
-extern unsigned long wait_init_idle;
-#define init_idle() clear_bit(smp_processor_id(), &wait_init_idle);
-
-extern spinlock_t schedule_lock[NR_CPUS] __cacheline_aligned;
-
-/*
- * Scheduler functions (in schedule.c)
- */
-#define set_current_state(_s) do { current->state = (_s); } while (0)
-void scheduler_init(void);
-void schedulers_start(void);
-void sched_add_domain(struct task_struct *p);
-int  sched_rem_domain(struct task_struct *p);
-long sched_ctl(struct sched_ctl_cmd *);
-long sched_adjdom(struct sched_adjdom_cmd *);
-void init_idle_task(void);
-void __wake_up(struct task_struct *p);
-void wake_up(struct task_struct *p);
-void reschedule(struct task_struct *p);
-unsigned long __reschedule(struct task_struct *p);
-
-/* NB. Limited entry in Xen. Not for arbitrary use! */
-asmlinkage void __enter_scheduler(void);
-#define schedule() __schedule_not_callable_in_xen()
-
-extern void switch_to(struct task_struct *prev, 
-                      struct task_struct *next);
-
-
-/* A compatibility hack for Linux drivers. */
-#define MAX_SCHEDULE_TIMEOUT 0UL
-static inline long schedule_timeout(long timeout)
-{
-    set_current_state(TASK_RUNNING);
-    mdelay(timeout*(1000/HZ));
-    return 0;
-}
-
-#define signal_pending(_p) \
-    ((_p)->hyp_events ||   \
-     ((_p)->shared_info->events & (_p)->shared_info->events_mask))
-
-void domain_init(void);
-
-int idle_cpu(int cpu); /* Is CPU 'cpu' idle right now? */
-
-void startup_cpu_idle_loop(void);
-void continue_cpu_idle_loop(void);
-
-void continue_nonidle_task(void);
-
-/* This task_hash and task_list are protected by the tasklist_lock. */
-#define TASK_HASH_SIZE 256
-#define TASK_HASH(_id) ((int)(_id)&(TASK_HASH_SIZE-1))
-extern struct task_struct *task_hash[TASK_HASH_SIZE];
-extern struct task_struct *task_list;
-
-#define for_each_domain(_p) \
- for ( (_p) = task_list; (_p) != NULL; (_p) = (_p)->next_list )
-
-extern void update_process_times(int user);
-
-#endif /*_LINUX_SCHED_H */
diff --git a/xen/include/xeno/serial.h b/xen/include/xeno/serial.h
deleted file mode 100644 (file)
index 3640fd0..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/******************************************************************************
- * serial.h
- * 
- * Driver for 16550-series UARTs. This driver is to be kept within Xen as
- * it permits debugging of seriously-toasted machines (e.g., in situations
- * where a device driver within a guest OS would be inaccessible).
- * 
- * Copyright (c) 2003-2004, K A Fraser
- */
-
-#ifndef __XEN_SERIAL_H__
-#define __XEN_SERIAL_H__
-
-#include <asm/ptrace.h>
-
-/* 'Serial handles' are comprise the following fields. */
-#define SERHND_IDX      (1<<0) /* COM1 or COM2?                           */
-#define SERHND_HI       (1<<1) /* Mux/demux each transferred char by MSB. */
-#define SERHND_LO       (1<<2) /* Ditto, except that the MSB is cleared.  */
-#define SERHND_COOKED   (1<<3) /* Newline/carriage-return translation?    */
-
-/* Two-stage initialisation (before/after IRQ-subsystem initialisation). */
-void serial_init_stage1(void);
-void serial_init_stage2(void);
-
-/* Takes a config string and creates a numeric handle on the COM port. */
-int parse_serial_handle(char *conf);
-
-/* Register a character-receive hook on the specified COM port. */
-typedef void (*serial_rx_fn)(unsigned char, struct pt_regs *);
-void serial_set_rx_handler(int handle, serial_rx_fn fn);
-
-/* Transmit a single character via the specified COM port. */
-void serial_putc(int handle, unsigned char c);
-
-/* Transmit a NULL-terminated string via the specified COM port. */
-void serial_puts(int handle, const unsigned char *s);
-
-/*
- * An alternative to registering a character-receive hook. This function
- * will not return until a character is available. It can safely be
- * called with interrupts disabled.
- */
-unsigned char serial_getc(int handle);
-
-#endif /* __XEN_SERIAL_H__ */
diff --git a/xen/include/xeno/skbuff.h b/xen/include/xeno/skbuff.h
deleted file mode 100644 (file)
index 4ea39cc..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- *     Definitions for the 'struct sk_buff' memory handlers.
- *
- *     Authors:
- *             Alan Cox, <gw4pts@gw4pts.ampr.org>
- *             Florian La Roche, <rzsfl@rz.uni-sb.de>
- *
- *     This program is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     as published by the Free Software Foundation; either version
- *     2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_SKBUFF_H
-#define _LINUX_SKBUFF_H
-
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/time.h>
-#include <xeno/timer.h>
-#include <xeno/cache.h>
-#include <xeno/slab.h>
-#include <asm/system.h>
-#include <asm/atomic.h>
-#include <asm/types.h>
-#include <xeno/mm.h>
-#include <xeno/vif.h>
-
-/* skb_type values */
-#define SKB_NORMAL               0 /* A Linux-style skbuff: no strangeness */
-#define SKB_ZERO_COPY            1 /* Zero copy skbs are used for receive  */
-#define SKB_NODATA               2 /* Data allocation not handled by us    */
-
-#define HAVE_ALLOC_SKB         /* For the drivers to know */
-#define HAVE_ALIGNABLE_SKB     /* Ditto 8)                */
-#define SLAB_SKB               /* Slabified skbuffs       */
-
-#define CHECKSUM_NONE 0
-#define CHECKSUM_HW 1
-#define CHECKSUM_UNNECESSARY 2
-
-#define SKB_DATA_ALIGN(X)      (((X) + (SMP_CACHE_BYTES-1)) & ~(SMP_CACHE_BYTES-1))
-
-/* A. Checksumming of received packets by device.
- *
- *     NONE: device failed to checksum this packet.
- *             skb->csum is undefined.
- *
- *     UNNECESSARY: device parsed packet and wouldbe verified checksum.
- *             skb->csum is undefined.
- *           It is bad option, but, unfortunately, many of vendors do this.
- *           Apparently with secret goal to sell you new device, when you
- *           will add new protocol to your host. F.e. IPv6. 8)
- *
- *     HW: the most generic way. Device supplied checksum of _all_
- *         the packet as seen by netif_rx in skb->csum.
- *         NOTE: Even if device supports only some protocols, but
- *         is able to produce some skb->csum, it MUST use HW,
- *         not UNNECESSARY.
- *
- * B. Checksumming on output.
- *
- *     NONE: skb is checksummed by protocol or csum is not required.
- *
- *     HW: device is required to csum packet as seen by hard_start_xmit
- *     from skb->h.raw to the end and to record the checksum
- *     at skb->h.raw+skb->csum.
- *
- *     Device must show its capabilities in dev->features, set
- *     at device setup time.
- *     NETIF_F_HW_CSUM - it is clever device, it is able to checksum
- *                       everything.
- *     NETIF_F_NO_CSUM - loopback or reliable single hop media.
- *     NETIF_F_IP_CSUM - device is dumb. It is able to csum only
- *                       TCP/UDP over IPv4. Sigh. Vendors like this
- *                       way by an unknown reason. Though, see comment above
- *                       about CHECKSUM_UNNECESSARY. 8)
- */
-
-#ifdef __i386__
-#define NET_CALLER(arg) (*(((void**)&arg)-1))
-#else
-#define NET_CALLER(arg) __builtin_return_address(0)
-#endif
-
-struct sk_buff_head {
-    /* These two members must be first. */
-    struct sk_buff     * next;
-    struct sk_buff     * prev;
-    __u32              qlen;
-};
-
-#define MAX_SKB_FRAGS 1 /* KAF: was 6 */
-
-typedef struct skb_frag_struct {
-    struct pfn_info *page;
-    __u16 page_offset;
-    __u16 size;
-} skb_frag_t;
-
-struct skb_shared_info {
-    unsigned int nr_frags;
-    skb_frag_t frags[MAX_SKB_FRAGS];
-};
-
-struct sk_buff {
-    /* These two members must be first. */
-    struct sk_buff     * next;                 /* Next buffer in list                          */
-    struct sk_buff     * prev;                 /* Previous buffer in list                      */
-
-    struct sk_buff_head * list;                /* List we are on                               */
-    struct net_device  *dev;           /* Device we arrived on/are leaving by          */
-
-    /* Transport layer header */
-    union
-    {
-        struct tcphdr  *th;
-        struct udphdr  *uh;
-        struct icmphdr *icmph;
-        struct igmphdr *igmph;
-        struct iphdr   *ipiph;
-        struct spxhdr  *spxh;
-        unsigned char  *raw;
-    } h;
-
-    /* Network layer header */
-    union
-    {
-        struct iphdr   *iph;
-        struct ipv6hdr *ipv6h;
-        struct arphdr  *arph;
-        struct ipxhdr  *ipxh;
-        unsigned char  *raw;
-    } nh;
-  
-    /* Link layer header */
-    union 
-    {  
-        struct ethhdr  *ethernet;
-        unsigned char  *raw;
-    } mac;
-
-    unsigned int       len;                    /* Length of actual data                        */
-    unsigned int       data_len;
-    unsigned int       csum;                   /* Checksum                                     */
-    unsigned char      skb_type,
-        pkt_type,              /* Packet class                                 */
-        ip_summed;             /* Driver fed us an IP checksum                 */
-    unsigned short     protocol;               /* Packet protocol from driver.                 */
-    unsigned char      *head;                  /* Head of buffer                               */
-    unsigned char      *data;                  /* Data head pointer                            */
-    unsigned char      *tail;                  /* Tail pointer                                 */
-    unsigned char      *end;                   /* End pointer                                  */
-
-    void               (*destructor)(struct sk_buff *);        /* Destruct function            */
-
-    unsigned short guest_id;  /* guest-OS's id for this packet (tx only!)   */
-    struct pfn_info *pf;      /* record of physical pf address for freeing  */
-    net_vif_t *src_vif;       /* vif we came from                           */
-    net_vif_t *dst_vif;       /* vif we are bound for                       */
-    struct skb_shared_info shinfo; /* shared info not shared in Xen.        */
-};
-
-extern void           __kfree_skb(struct sk_buff *skb);
-extern struct sk_buff *alloc_skb(unsigned int size, int priority);
-extern struct sk_buff *alloc_skb_nodata(int priority);
-extern struct sk_buff *alloc_zc_skb(unsigned int size, int priority);
-extern void           kfree_skbmem(struct sk_buff *skb);
-extern struct sk_buff *skb_copy(const struct sk_buff *skb, int priority);
-#define dev_kfree_skb(a)       kfree_skb(a)
-extern void    skb_over_panic(struct sk_buff *skb, int len, void *here);
-extern void    skb_under_panic(struct sk_buff *skb, int len, void *here);
-
-/* In Xen, we don't clone skbs, so shared data can go in the sk_buff struct. */
-#define skb_shinfo(SKB)     ((struct skb_shared_info *)(&(SKB)->shinfo))
-
-/**
- *     kfree_skb - free an sk_buff
- *     @skb: buffer to free
- *
- *     Drop a reference to the buffer and free it if the usage count has
- *     hit zero.
- */
-static inline void kfree_skb(struct sk_buff *skb)
-{
-    __kfree_skb(skb);
-}
-
-/**
- *     skb_queue_len   - get queue length
- *     @list_: list to measure
- *
- *     Return the length of an &sk_buff queue. 
- */
-static inline __u32 skb_queue_len(struct sk_buff_head *list_)
-{
-    return(list_->qlen);
-}
-
-static inline void skb_queue_head_init(struct sk_buff_head *list)
-{
-    list->prev = (struct sk_buff *)list;
-    list->next = (struct sk_buff *)list;
-    list->qlen = 0;
-}
-
-/**
- *     __skb_queue_head - queue a buffer at the list head
- *     @list: list to use
- *     @newsk: buffer to queue
- *
- *     A buffer cannot be placed on two lists at the same time.
- */    
-static inline void __skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk)
-{
-    struct sk_buff *prev, *next;
-
-    newsk->list = list;
-    list->qlen++;
-    prev = (struct sk_buff *)list;
-    next = prev->next;
-    newsk->next = next;
-    newsk->prev = prev;
-    next->prev = newsk;
-    prev->next = newsk;
-}
-
-/**
- *      __skb_queue_tail - queue a buffer at the list tail
- *      @list: list to use
- *      @newsk: buffer to queue
- *
- *      A buffer cannot be placed on two lists at the same time.
- */ 
-
-static inline void __skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk)
-{
-        struct sk_buff *prev, *next;
-
-        newsk->list = list;
-        list->qlen++;
-        next = (struct sk_buff *)list;
-        prev = next->prev;
-        newsk->next = next;
-        newsk->prev = prev;
-        next->prev = newsk;
-        prev->next = newsk;
-}
-
-/**
- *     __skb_dequeue - remove from the head of the queue
- *     @list: list to dequeue from
- *
- *     Remove the head of the list. This function does not take any locks
- *     so must be used with appropriate locks held only. The head item is
- *     returned or %NULL if the list is empty.
- */
-
-static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list)
-{
-    struct sk_buff *next, *prev, *result;
-
-    prev = (struct sk_buff *) list;
-    next = prev->next;
-    result = NULL;
-    if (next != prev) {
-        result = next;
-        next = next->next;
-        list->qlen--;
-        next->prev = prev;
-        prev->next = next;
-        result->next = NULL;
-        result->prev = NULL;
-        result->list = NULL;
-    }
-    return result;
-}
-
-static inline int skb_is_nonlinear(const struct sk_buff *skb)
-{
-    return skb->data_len;
-}
-
-static inline unsigned int skb_headlen(const struct sk_buff *skb)
-{
-        return skb->len - skb->data_len;
-}
-                                                                                
-#define SKB_LINEAR_ASSERT(skb) do { if (skb_is_nonlinear(skb)) BUG(); } while (0)
-
-/*
- *     Add data to an sk_buff
- */
-static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
-{
-    unsigned char *tmp=skb->tail;
-    SKB_LINEAR_ASSERT(skb);
-    skb->tail+=len;
-    skb->len+=len;
-    return tmp;
-}
-
-/**
- *     skb_put - add data to a buffer
- *     @skb: buffer to use 
- *     @len: amount of data to add
- *
- *     This function extends the used data area of the buffer. If this would
- *     exceed the total buffer size the kernel will panic. A pointer to the
- *     first byte of the extra data is returned.
- */
-static inline unsigned char *skb_put(struct sk_buff *skb, unsigned int len)
-{
-    unsigned char *tmp=skb->tail;
-    SKB_LINEAR_ASSERT(skb);
-    skb->tail+=len;
-    skb->len+=len;
-    if(skb->tail>skb->end) {
-        skb_over_panic(skb, len, current_text_addr());
-    }
-    return tmp;
-}
-
-static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
-{
-    skb->data-=len;
-    skb->len+=len;
-    return skb->data;
-}
-
-/**
- *     skb_push - add data to the start of a buffer
- *     @skb: buffer to use 
- *     @len: amount of data to add
- *
- *     This function extends the used data area of the buffer at the buffer
- *     start. If this would exceed the total buffer headroom the kernel will
- *     panic. A pointer to the first byte of the extra data is returned.
- */
-
-static inline unsigned char *skb_push(struct sk_buff *skb, unsigned int len)
-{
-    skb->data-=len;
-    skb->len+=len;
-    if(skb->data<skb->head) {
-        skb_under_panic(skb, len, current_text_addr());
-    }
-    return skb->data;
-}
-
-static inline char *__skb_pull(struct sk_buff *skb, unsigned int len)
-{
-    skb->len-=len;
-    if (skb->len < skb->data_len)
-        BUG();
-    return     skb->data+=len;
-}
-
-/**
- *     skb_pull - remove data from the start of a buffer
- *     @skb: buffer to use 
- *     @len: amount of data to remove
- *
- *     This function removes data from the start of a buffer, returning
- *     the memory to the headroom. A pointer to the next data in the buffer
- *     is returned. Once the data has been pulled future pushes will overwrite
- *     the old data.
- */
-
-static inline unsigned char * skb_pull(struct sk_buff *skb, unsigned int len)
-{      
-    if (len > skb->len)
-        return NULL;
-    return __skb_pull(skb,len);
-}
-
-/**
- *     skb_reserve - adjust headroom
- *     @skb: buffer to alter
- *     @len: bytes to move
- *
- *     Increase the headroom of an empty &sk_buff by reducing the tail
- *     room. This is only allowed for an empty buffer.
- */
-
-static inline void skb_reserve(struct sk_buff *skb, unsigned int len)
-{
-    skb->data+=len;
-    skb->tail+=len;
-}
-
-/**
- *     __dev_alloc_skb - allocate an skbuff for sending
- *     @length: length to allocate
- *     @gfp_mask: get_free_pages mask, passed to alloc_skb
- *
- *     Allocate a new &sk_buff and assign it a usage count of one. The
- *     buffer has unspecified headroom built in. Users should allocate
- *     the headroom they think they need without accounting for the
- *     built in space. The built in space is used for optimisations.
- *
- *     %NULL is returned in there is no free memory.
- */
-static inline struct sk_buff *__dev_alloc_skb(unsigned int length,
-                                             int gfp_mask)
-{
-    struct sk_buff *skb;
-    skb = alloc_zc_skb(length+16, gfp_mask);
-    if (skb)
-        skb_reserve(skb,16);
-    return skb;
-}
-
-/**
- *     dev_alloc_skb - allocate an skbuff for sending
- *     @length: length to allocate
- *
- *     Allocate a new &sk_buff and assign it a usage count of one. The
- *     buffer has unspecified headroom built in. Users should allocate
- *     the headroom they think they need without accounting for the
- *     built in space. The built in space is used for optimisations.
- *
- *     %NULL is returned in there is no free memory. Although this function
- *     allocates memory it can be called from an interrupt.
- */
-static inline struct sk_buff *dev_alloc_skb(unsigned int length)
-{
-    return __dev_alloc_skb(length, GFP_ATOMIC);
-}
-
-#include <asm/domain_page.h>
-
-static inline void *kmap_skb_frag(const skb_frag_t *frag)
-{
-    return map_domain_mem(__pa(page_address(frag->page)));
-}
-
-static inline void kunmap_skb_frag(void *vaddr)
-{
-    unmap_domain_mem(vaddr);
-}
-
-extern int skb_copy_bits(const struct sk_buff *skb, 
-                         int offset, void *to, int len);
-extern void skb_init(void);
-
-#endif /* _LINUX_SKBUFF_H */
diff --git a/xen/include/xeno/slab.h b/xen/include/xeno/slab.h
deleted file mode 100644 (file)
index 21a5305..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * linux/mm/slab.h
- * Written by Mark Hemment, 1996.
- * (markhe@nextd.demon.co.uk)
- */
-
-#if    !defined(_LINUX_SLAB_H)
-#define        _LINUX_SLAB_H
-
-typedef struct kmem_cache_s kmem_cache_t;
-
-#include       <xeno/mm.h>
-#include       <xeno/cache.h>
-
-/* flags for kmem_cache_alloc() */
-#define        SLAB_NOFS               GFP_NOFS
-#define        SLAB_NOIO               GFP_NOIO
-#define SLAB_NOHIGHIO          GFP_NOHIGHIO
-#define        SLAB_ATOMIC             GFP_ATOMIC
-#define        SLAB_USER               GFP_USER
-#define        SLAB_KERNEL             GFP_KERNEL
-#define        SLAB_NFS                GFP_NFS
-#define        SLAB_DMA                GFP_DMA
-
-#define SLAB_LEVEL_MASK                (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_HIGHIO|__GFP_FS)
-#define        SLAB_NO_GROW            0x00001000UL    /* don't grow a cache */
-
-/* flags to pass to kmem_cache_create().
- * The first 3 are only valid when the allocator as been build
- * SLAB_DEBUG_SUPPORT.
- */
-#define        SLAB_DEBUG_FREE         0x00000100UL    /* Peform (expensive) checks on free */
-#define        SLAB_DEBUG_INITIAL      0x00000200UL    /* Call constructor (as verifier) */
-#define        SLAB_RED_ZONE           0x00000400UL    /* Red zone objs in a cache */
-#define        SLAB_POISON             0x00000800UL    /* Poison objects */
-#define        SLAB_NO_REAP            0x00001000UL    /* never reap from the cache */
-#define        SLAB_HWCACHE_ALIGN      0x00002000UL    /* align objs on a h/w cache lines */
-#define SLAB_CACHE_DMA         0x00004000UL    /* use GFP_DMA memory */
-
-/* flags passed to a constructor func */
-#define        SLAB_CTOR_CONSTRUCTOR   0x001UL         /* if not set, then deconstructor */
-#define SLAB_CTOR_ATOMIC       0x002UL         /* tell constructor it can't sleep */
-#define        SLAB_CTOR_VERIFY        0x004UL         /* tell constructor it's a verify call */
-
-/* prototypes */
-extern void kmem_cache_init(void);
-extern void kmem_cache_sizes_init(unsigned long);
-
-extern kmem_cache_t *kmem_find_general_cachep(size_t, int gfpflags);
-extern kmem_cache_t *kmem_cache_create(const char *, size_t, size_t, unsigned long,
-                                      void (*)(void *, kmem_cache_t *, unsigned long),
-                                      void (*)(void *, kmem_cache_t *, unsigned long));
-extern int kmem_cache_destroy(kmem_cache_t *);
-extern int kmem_cache_shrink(kmem_cache_t *);
-extern void *kmem_cache_alloc(kmem_cache_t *, int);
-extern void kmem_cache_free(kmem_cache_t *, void *);
-
-extern void *kmalloc(size_t, int);
-extern void kfree(const void *);
-
-extern int FASTCALL(kmem_cache_reap(int));
-
-extern void dump_slabinfo();
-
-#if 0
-extern int slabinfo_read_proc(char *page, char **start, off_t off,
-                                int count, int *eof, void *data);
-extern int slabinfo_write_proc(struct file *file, const char *buffer,
-                          unsigned long count, void *data);
-#endif
-
-/* System wide caches */
-extern kmem_cache_t    *vm_area_cachep;
-extern kmem_cache_t    *mm_cachep;
-extern kmem_cache_t    *names_cachep;
-extern kmem_cache_t    *files_cachep;
-extern kmem_cache_t    *filp_cachep;
-extern kmem_cache_t    *dquot_cachep;
-extern kmem_cache_t    *bh_cachep;
-extern kmem_cache_t    *fs_cachep;
-extern kmem_cache_t    *sigact_cachep;
-
-
-#endif /* _LINUX_SLAB_H */
diff --git a/xen/include/xeno/smp.h b/xen/include/xeno/smp.h
deleted file mode 100644 (file)
index 7860266..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#ifndef __LINUX_SMP_H
-#define __LINUX_SMP_H
-
-/*
- *     Generic SMP support
- *             Alan Cox. <alan@redhat.com>
- */
-
-#include <xeno/config.h>
-
-#ifdef CONFIG_SMP
-
-#include <asm/smp.h>
-
-/*
- * main cross-CPU interfaces, handles INIT, TLB flush, STOP, etc.
- * (defined in asm header):
- */ 
-
-/*
- * stops all CPUs but the current one:
- */
-extern void smp_send_stop(void);
-
-extern void FASTCALL(smp_send_event_check_mask(unsigned long cpu_mask));
-#define smp_send_event_check_cpu(_cpu) smp_send_event_check_mask(1<<(_cpu))
-
-
-/*
- * Boot processor call to load the other CPU's
- */
-extern void smp_boot_cpus(void);
-
-/*
- * Processor call in. Must hold processors until ..
- */
-extern void smp_callin(void);
-
-/*
- * Multiprocessors may now schedule
- */
-extern void smp_commence(void);
-
-/*
- * Call a function on all other processors
- */
-extern int smp_call_function (void (*func) (void *info), void *info,
-                             int retry, int wait);
-
-/*
- * True once the per process idle is forked
- */
-extern int smp_threads_ready;
-
-extern int smp_num_cpus;
-
-extern volatile unsigned long smp_msg_data;
-extern volatile int smp_src_cpu;
-extern volatile int smp_msg_id;
-
-#define MSG_ALL_BUT_SELF       0x8000  /* Assume <32768 CPU's */
-#define MSG_ALL                        0x8001
-
-#define MSG_INVALIDATE_TLB     0x0001  /* Remote processor TLB invalidate */
-#define MSG_STOP_CPU           0x0002  /* Sent to shut down slave CPU's
-                                        * when rebooting
-                                        */
-#define MSG_RESCHEDULE         0x0003  /* Reschedule request from master CPU*/
-#define MSG_CALL_FUNCTION       0x0004  /* Call function on all other CPUs */
-
-#else
-
-/*
- *     These macros fold the SMP functionality into a single CPU system
- */
-#define smp_num_cpus                           1
-#define smp_processor_id()                     0
-#define hard_smp_processor_id()                        0
-#define smp_threads_ready                      1
-#define kernel_lock()
-#define cpu_logical_map(cpu)                   0
-#define cpu_number_map(cpu)                    0
-#define smp_call_function(func,info,retry,wait)        ({ 0; })
-#define cpu_online_map                         1
-
-#endif
-#endif
diff --git a/xen/include/xeno/socket.h b/xen/include/xeno/socket.h
deleted file mode 100644 (file)
index 69636e7..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-#ifndef _LINUX_SOCKET_H
-#define _LINUX_SOCKET_H
-
-#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
-
-//#include <asm/socket.h>                      /* arch-dependent defines       */
-#include <xeno/sockios.h>              /* the SIOCxxx I/O controls     */
-//#include <xeno/uio.h>                        /* iovec support                */
-#include <xeno/types.h>                /* pid_t                        */
-
-typedef unsigned short sa_family_t;
-
-/*
- *     1003.1g requires sa_family_t and that sa_data is char.
- */
-struct sockaddr {
-       sa_family_t     sa_family;      /* address family, AF_xxx       */
-       char            sa_data[14];    /* 14 bytes of protocol address */
-};
-
-/* Supported address families. */
-#define AF_UNSPEC      0
-#define AF_UNIX                1       /* Unix domain sockets          */
-#define AF_LOCAL       1       /* POSIX name for AF_UNIX       */
-#define AF_INET                2       /* Internet IP Protocol         */
-#define AF_AX25                3       /* Amateur Radio AX.25          */
-#define AF_IPX         4       /* Novell IPX                   */
-#define AF_APPLETALK   5       /* AppleTalk DDP                */
-#define AF_NETROM      6       /* Amateur Radio NET/ROM        */
-#define AF_BRIDGE      7       /* Multiprotocol bridge         */
-#define AF_ATMPVC      8       /* ATM PVCs                     */
-#define AF_X25         9       /* Reserved for X.25 project    */
-#define AF_INET6       10      /* IP version 6                 */
-#define AF_ROSE                11      /* Amateur Radio X.25 PLP       */
-#define AF_DECnet      12      /* Reserved for DECnet project  */
-#define AF_NETBEUI     13      /* Reserved for 802.2LLC project*/
-#define AF_SECURITY    14      /* Security callback pseudo AF */
-#define AF_KEY         15      /* PF_KEY key management API */
-#define AF_NETLINK     16
-#define AF_ROUTE       AF_NETLINK /* Alias to emulate 4.4BSD */
-#define AF_PACKET      17      /* Packet family                */
-#define AF_ASH         18      /* Ash                          */
-#define AF_ECONET      19      /* Acorn Econet                 */
-#define AF_ATMSVC      20      /* ATM SVCs                     */
-#define AF_SNA         22      /* Linux SNA Project (nutters!) */
-#define AF_IRDA                23      /* IRDA sockets                 */
-#define AF_PPPOX       24      /* PPPoX sockets                */
-#define AF_WANPIPE     25      /* Wanpipe API Sockets */
-#define AF_BLUETOOTH   31      /* Bluetooth sockets            */
-#define AF_MAX         32      /* For now.. */
-
-/* Protocol families, same as address families. */
-#define PF_UNSPEC      AF_UNSPEC
-#define PF_UNIX                AF_UNIX
-#define PF_LOCAL       AF_LOCAL
-#define PF_INET                AF_INET
-#define PF_AX25                AF_AX25
-#define PF_IPX         AF_IPX
-#define PF_APPLETALK   AF_APPLETALK
-#define        PF_NETROM       AF_NETROM
-#define PF_BRIDGE      AF_BRIDGE
-#define PF_ATMPVC      AF_ATMPVC
-#define PF_X25         AF_X25
-#define PF_INET6       AF_INET6
-#define PF_ROSE                AF_ROSE
-#define PF_DECnet      AF_DECnet
-#define PF_NETBEUI     AF_NETBEUI
-#define PF_SECURITY    AF_SECURITY
-#define PF_KEY         AF_KEY
-#define PF_NETLINK     AF_NETLINK
-#define PF_ROUTE       AF_ROUTE
-#define PF_PACKET      AF_PACKET
-#define PF_ASH         AF_ASH
-#define PF_ECONET      AF_ECONET
-#define PF_ATMSVC      AF_ATMSVC
-#define PF_SNA         AF_SNA
-#define PF_IRDA                AF_IRDA
-#define PF_PPPOX       AF_PPPOX
-#define PF_WANPIPE     AF_WANPIPE
-#define PF_BLUETOOTH   AF_BLUETOOTH
-#define PF_MAX         AF_MAX
-
-/* Maximum queue length specifiable by listen.  */
-#define SOMAXCONN      128
-
-/* Flags we can use with send/ and recv. 
-   Added those for 1003.1g not all are supported yet
- */
-#define MSG_OOB                1
-#define MSG_PEEK       2
-#define MSG_DONTROUTE  4
-#define MSG_TRYHARD     4       /* Synonym for MSG_DONTROUTE for DECnet */
-#define MSG_CTRUNC     8
-#define MSG_PROBE      0x10    /* Do not send. Only probe path f.e. for MTU */
-#define MSG_TRUNC      0x20
-#define MSG_DONTWAIT   0x40    /* Nonblocking io                */
-#define MSG_EOR         0x80   /* End of record */
-#define MSG_WAITALL    0x100   /* Wait for a full request */
-#define MSG_FIN         0x200
-#define MSG_SYN                0x400
-#define MSG_CONFIRM    0x800   /* Confirm path validity */
-#define MSG_RST                0x1000
-#define MSG_ERRQUEUE   0x2000  /* Fetch message from error queue */
-#define MSG_NOSIGNAL   0x4000  /* Do not generate SIGPIPE */
-#define MSG_MORE       0x8000  /* Sender will send more */
-
-#define MSG_EOF         MSG_FIN
-
-
-/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */
-#define SOL_IP         0
-/* #define SOL_ICMP    1       No-no-no! Due to Linux :-) we cannot use SOL_ICMP=1 */
-#define SOL_TCP                6
-#define SOL_UDP                17
-#define SOL_IPV6       41
-#define SOL_ICMPV6     58
-#define SOL_RAW                255
-#define SOL_IPX                256
-#define SOL_AX25       257
-#define SOL_ATALK      258
-#define SOL_NETROM     259
-#define SOL_ROSE       260
-#define SOL_DECNET     261
-#define        SOL_X25         262
-#define SOL_PACKET     263
-#define SOL_ATM                264     /* ATM layer (cell level) */
-#define SOL_AAL                265     /* ATM Adaption Layer (packet level) */
-#define SOL_IRDA        266
-
-/* IPX options */
-#define IPX_TYPE       1
-
-#endif /* not kernel and not glibc */
-#endif /* _LINUX_SOCKET_H */
diff --git a/xen/include/xeno/sockios.h b/xen/include/xeno/sockios.h
deleted file mode 100644 (file)
index a0ad810..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions of the socket-level I/O control calls.
- *
- * Version:    @(#)sockios.h   1.0.2   03/09/93
- *
- * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_SOCKIOS_H
-#define _LINUX_SOCKIOS_H
-
-//#include <asm/sockios.h>
-
-/* Linux-specific socket ioctls */
-#define SIOCINQ                FIONREAD
-#define SIOCOUTQ       TIOCOUTQ
-
-/* Routing table calls. */
-#define SIOCADDRT      0x890B          /* add routing table entry      */
-#define SIOCDELRT      0x890C          /* delete routing table entry   */
-#define SIOCRTMSG      0x890D          /* call to routing system       */
-
-/* Socket configuration controls. */
-#define SIOCGIFNAME    0x8910          /* get iface name               */
-#define SIOCSIFLINK    0x8911          /* set iface channel            */
-#define SIOCGIFCONF    0x8912          /* get iface list               */
-#define SIOCGIFFLAGS   0x8913          /* get flags                    */
-#define SIOCSIFFLAGS   0x8914          /* set flags                    */
-#define SIOCGIFADDR    0x8915          /* get PA address               */
-#define SIOCSIFADDR    0x8916          /* set PA address               */
-#define SIOCGIFDSTADDR 0x8917          /* get remote PA address        */
-#define SIOCSIFDSTADDR 0x8918          /* set remote PA address        */
-#define SIOCGIFBRDADDR 0x8919          /* get broadcast PA address     */
-#define SIOCSIFBRDADDR 0x891a          /* set broadcast PA address     */
-#define SIOCGIFNETMASK 0x891b          /* get network PA mask          */
-#define SIOCSIFNETMASK 0x891c          /* set network PA mask          */
-#define SIOCGIFMETRIC  0x891d          /* get metric                   */
-#define SIOCSIFMETRIC  0x891e          /* set metric                   */
-#define SIOCGIFMEM     0x891f          /* get memory address (BSD)     */
-#define SIOCSIFMEM     0x8920          /* set memory address (BSD)     */
-#define SIOCGIFMTU     0x8921          /* get MTU size                 */
-#define SIOCSIFMTU     0x8922          /* set MTU size                 */
-#define SIOCSIFNAME    0x8923          /* set interface name */
-#define        SIOCSIFHWADDR   0x8924          /* set hardware address         */
-#define SIOCGIFENCAP   0x8925          /* get/set encapsulations       */
-#define SIOCSIFENCAP   0x8926          
-#define SIOCGIFHWADDR  0x8927          /* Get hardware address         */
-#define SIOCGIFSLAVE   0x8929          /* Driver slaving support       */
-#define SIOCSIFSLAVE   0x8930
-#define SIOCADDMULTI   0x8931          /* Multicast address lists      */
-#define SIOCDELMULTI   0x8932
-#define SIOCGIFINDEX   0x8933          /* name -> if_index mapping     */
-#define SIOGIFINDEX    SIOCGIFINDEX    /* misprint compatibility :-)   */
-#define SIOCSIFPFLAGS  0x8934          /* set/get extended flags set   */
-#define SIOCGIFPFLAGS  0x8935
-#define SIOCDIFADDR    0x8936          /* delete PA address            */
-#define        SIOCSIFHWBROADCAST      0x8937  /* set hardware broadcast addr  */
-#define SIOCGIFCOUNT   0x8938          /* get number of devices */
-
-#define SIOCGIFBR      0x8940          /* Bridging support             */
-#define SIOCSIFBR      0x8941          /* Set bridging options         */
-
-#define SIOCGIFDIVERT  0x8944          /* Frame diversion support */
-#define SIOCSIFDIVERT  0x8945          /* Set frame diversion options */
-
-#define SIOCETHTOOL    0x8946          /* Ethtool interface            */
-
-#define SIOCGMIIPHY    0x8947          /* Get address of MII PHY in use. */
-#define SIOCGMIIREG    0x8948          /* Read MII PHY register.       */
-#define SIOCSMIIREG    0x8949          /* Write MII PHY register.      */
-
-/* ARP cache control calls. */
-                   /*  0x8950 - 0x8952  * obsolete calls, don't re-use */
-#define SIOCDARP       0x8953          /* delete ARP table entry       */
-#define SIOCGARP       0x8954          /* get ARP table entry          */
-#define SIOCSARP       0x8955          /* set ARP table entry          */
-
-/* RARP cache control calls. */
-#define SIOCDRARP      0x8960          /* delete RARP table entry      */
-#define SIOCGRARP      0x8961          /* get RARP table entry         */
-#define SIOCSRARP      0x8962          /* set RARP table entry         */
-
-/* Driver configuration calls */
-
-#define SIOCGIFMAP     0x8970          /* Get device parameters        */
-#define SIOCSIFMAP     0x8971          /* Set device parameters        */
-
-/* DLCI configuration calls */
-
-#define SIOCADDDLCI    0x8980          /* Create new DLCI device       */
-#define SIOCDELDLCI    0x8981          /* Delete DLCI device           */
-
-#define SIOCGIFVLAN    0x8982          /* 802.1Q VLAN support          */
-#define SIOCSIFVLAN    0x8983          /* Set 802.1Q VLAN options      */
-
-/* bonding calls */
-
-#define SIOCBONDENSLAVE        0x8990          /* enslave a device to the bond */
-#define SIOCBONDRELEASE 0x8991         /* release a slave from the bond*/
-#define SIOCBONDSETHWADDR      0x8992  /* set the hw addr of the bond  */
-#define SIOCBONDSLAVEINFOQUERY 0x8993   /* rtn info about slave state   */
-#define SIOCBONDINFOQUERY      0x8994  /* rtn info about bond state    */
-#define SIOCBONDCHANGEACTIVE   0x8995   /* update to a new active slave */
-                       
-/* Device private ioctl calls */
-
-/*
- *     These 16 ioctls are available to devices via the do_ioctl() device
- *     vector. Each device should include this file and redefine these names
- *     as their own. Because these are device dependent it is a good idea
- *     _NOT_ to issue them to random objects and hope.
- *
- *     THESE IOCTLS ARE _DEPRECATED_ AND WILL DISAPPEAR IN 2.5.X -DaveM
- */
-#define SIOCDEVPRIVATE 0x89F0  /* to 89FF */
-
-/*
- *     These 16 ioctl calls are protocol private
- */
-#define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */
-#endif /* _LINUX_SOCKIOS_H */
diff --git a/xen/include/xeno/spinlock.h b/xen/include/xeno/spinlock.h
deleted file mode 100644 (file)
index a6e7fa5..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-#ifndef __LINUX_SPINLOCK_H
-#define __LINUX_SPINLOCK_H
-
-#include <xeno/config.h>
-#include <asm/system.h>
-
-/*
- * These are the generic versions of the spinlocks and read-write
- * locks..
- */
-#define spin_lock_irqsave(lock, flags)         do { local_irq_save(flags);       spin_lock(lock); } while (0)
-#define spin_lock_irq(lock)                    do { local_irq_disable();         spin_lock(lock); } while (0)
-#define spin_lock_bh(lock)                     do { local_bh_disable();          spin_lock(lock); } while (0)
-
-#define read_lock_irqsave(lock, flags)         do { local_irq_save(flags);       read_lock(lock); } while (0)
-#define read_lock_irq(lock)                    do { local_irq_disable();         read_lock(lock); } while (0)
-#define read_lock_bh(lock)                     do { local_bh_disable();          read_lock(lock); } while (0)
-
-#define write_lock_irqsave(lock, flags)                do { local_irq_save(flags);      write_lock(lock); } while (0)
-#define write_lock_irq(lock)                   do { local_irq_disable();        write_lock(lock); } while (0)
-#define write_lock_bh(lock)                    do { local_bh_disable();         write_lock(lock); } while (0)
-
-#define spin_unlock_irqrestore(lock, flags)    do { spin_unlock(lock);  local_irq_restore(flags); } while (0)
-#define spin_unlock_irq(lock)                  do { spin_unlock(lock);  local_irq_enable();       } while (0)
-#define spin_unlock_bh(lock)                   do { spin_unlock(lock);  local_bh_enable();        } while (0)
-
-#define read_unlock_irqrestore(lock, flags)    do { read_unlock(lock);  local_irq_restore(flags); } while (0)
-#define read_unlock_irq(lock)                  do { read_unlock(lock);  local_irq_enable();       } while (0)
-#define read_unlock_bh(lock)                   do { read_unlock(lock);  local_bh_enable();        } while (0)
-
-#define write_unlock_irqrestore(lock, flags)   do { write_unlock(lock); local_irq_restore(flags); } while (0)
-#define write_unlock_irq(lock)                 do { write_unlock(lock); local_irq_enable();       } while (0)
-#define write_unlock_bh(lock)                  do { write_unlock(lock); local_bh_enable();        } while (0)
-#define spin_trylock_bh(lock)                  ({ int __r; local_bh_disable();\
-                                               __r = spin_trylock(lock);      \
-                                               if (!__r) local_bh_enable();   \
-                                               __r; })
-
-#ifdef CONFIG_SMP
-#include <asm/spinlock.h>
-
-#elif !defined(spin_lock_init) /* !SMP and spin_lock_init not previously
-                                  defined (e.g. by including asm/spinlock.h */
-
-#define DEBUG_SPINLOCKS        0       /* 0 == no debugging, 1 == maintain lock state, 2 == full debug */
-
-#if (DEBUG_SPINLOCKS < 1)
-
-#define atomic_dec_and_lock(atomic,lock) atomic_dec_and_test(atomic)
-#define ATOMIC_DEC_AND_LOCK
-
-/*
- * Your basic spinlocks, allowing only a single CPU anywhere
- *
- * Most gcc versions have a nasty bug with empty initializers.
- */
-#if (__GNUC__ > 2)
-  typedef struct { } spinlock_t;
-  #define SPIN_LOCK_UNLOCKED (spinlock_t) { }
-#else
-  typedef struct { int gcc_is_buggy; } spinlock_t;
-  #define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
-#endif
-
-#define spin_lock_init(lock)   do { } while(0)
-#define spin_lock(lock)                (void)(lock) /* Not "unused variable". */
-#define spin_is_locked(lock)   (0)
-#define spin_trylock(lock)     ({1; })
-#define spin_unlock_wait(lock) do { } while(0)
-#define spin_unlock(lock)      do { } while(0)
-
-#elif (DEBUG_SPINLOCKS < 2)
-
-typedef struct {
-       volatile unsigned long lock;
-} spinlock_t;
-#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
-
-#define spin_lock_init(x)      do { (x)->lock = 0; } while (0)
-#define spin_is_locked(lock)   (test_bit(0,(lock)))
-#define spin_trylock(lock)     (!test_and_set_bit(0,(lock)))
-
-#define spin_lock(x)           do { (x)->lock = 1; } while (0)
-#define spin_unlock_wait(x)    do { } while (0)
-#define spin_unlock(x)         do { (x)->lock = 0; } while (0)
-
-#else /* (DEBUG_SPINLOCKS >= 2) */
-
-typedef struct {
-       volatile unsigned long lock;
-       volatile unsigned int babble;
-       const char *module;
-} spinlock_t;
-#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0, 25, __BASE_FILE__ }
-
-/*#include <xeno/kernel.h>*/
-
-#define spin_lock_init(x)      do { (x)->lock = 0; } while (0)
-#define spin_is_locked(lock)   (test_bit(0,(lock)))
-#define spin_trylock(lock)     (!test_and_set_bit(0,(lock)))
-
-#define spin_lock(x)           do {unsigned long __spinflags; save_flags(__spinflags); cli(); if ((x)->lock&&(x)->babble) {printk("%s:%d: spin_lock(%s:%p) already locked\n", __BASE_FILE__,__LINE__, (x)->module, (x));(x)->babble--;} (x)->lock = 1; restore_flags(__spinflags);} while (0)
-#define spin_unlock_wait(x)    do {unsigned long __spinflags; save_flags(__spinflags); cli(); if ((x)->lock&&(x)->babble) {printk("%s:%d: spin_unlock_wait(%s:%p) deadlock\n", __BASE_FILE__,__LINE__, (x)->module, (x));(x)->babble--;} restore_flags(__spinflags);} while (0)
-#define spin_unlock(x)         do {unsigned long __spinflags; save_flags(__spinflags); cli(); if (!(x)->lock&&(x)->babble) {printk("%s:%d: spin_unlock(%s:%p) not locked\n", __BASE_FILE__,__LINE__, (x)->module, (x));(x)->babble--;} (x)->lock = 0; restore_flags(__spinflags);} while (0)
-
-#endif /* DEBUG_SPINLOCKS */
-
-/*
- * Read-write spinlocks, allowing multiple readers
- * but only one writer.
- *
- * NOTE! it is quite common to have readers in interrupts
- * but no interrupt writers. For those circumstances we
- * can "mix" irq-safe locks - any writer needs to get a
- * irq-safe write-lock, but readers can get non-irqsafe
- * read-locks.
- *
- * Most gcc versions have a nasty bug with empty initializers.
- */
-#if (__GNUC__ > 2)
-  typedef struct { } rwlock_t;
-  #define RW_LOCK_UNLOCKED (rwlock_t) { }
-#else
-  typedef struct { int gcc_is_buggy; } rwlock_t;
-  #define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
-#endif
-
-#define rwlock_init(lock)      do { } while(0)
-#define read_lock(lock)                (void)(lock) /* Not "unused variable". */
-#define read_unlock(lock)      do { } while(0)
-#define write_lock(lock)       (void)(lock) /* Not "unused variable". */
-#define write_unlock(lock)     do { } while(0)
-
-#endif /* !SMP */
-
-/* "lock on reference count zero" */
-#ifndef ATOMIC_DEC_AND_LOCK
-#include <asm/atomic.h>
-extern int atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock);
-#endif
-
-#endif /* __LINUX_SPINLOCK_H */
diff --git a/xen/include/xeno/string.h b/xen/include/xeno/string.h
deleted file mode 100644 (file)
index 6bba297..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#ifndef _LINUX_STRING_H_
-#define _LINUX_STRING_H_
-
-/* We don't want strings.h stuff being user by user stuff by accident */
-
-#ifdef __KERNEL__
-
-#include <xeno/types.h>        /* for size_t */
-//#include <xeno/stddef.h>     /* for NULL */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define __kernel_size_t size_t
-
-extern char * ___strtok;
-extern char * strpbrk(const char *,const char *);
-extern char * strtok(char *,const char *);
-extern char * strsep(char **,const char *);
-extern __kernel_size_t strspn(const char *,const char *);
-
-
-/*
- * Include machine specific inline routines
- */
-#include <asm/string.h>
-
-#ifndef __HAVE_ARCH_STRCPY
-extern char * strcpy(char *,const char *);
-#endif
-#ifndef __HAVE_ARCH_STRNCPY
-extern char * strncpy(char *,const char *, __kernel_size_t);
-#endif
-#ifndef __HAVE_ARCH_STRCAT
-extern char * strcat(char *, const char *);
-#endif
-#ifndef __HAVE_ARCH_STRNCAT
-extern char * strncat(char *, const char *, __kernel_size_t);
-#endif
-#ifndef __HAVE_ARCH_STRCMP
-extern int strcmp(const char *,const char *);
-#endif
-#ifndef __HAVE_ARCH_STRNCMP
-extern int strncmp(const char *,const char *,__kernel_size_t);
-#endif
-#ifndef __HAVE_ARCH_STRNICMP
-extern int strnicmp(const char *, const char *, __kernel_size_t);
-#endif
-#ifndef __HAVE_ARCH_STRCHR
-extern char * strchr(const char *,int);
-#endif
-#ifndef __HAVE_ARCH_STRRCHR
-extern char * strrchr(const char *,int);
-#endif
-#ifndef __HAVE_ARCH_STRSTR
-extern char * strstr(const char *,const char *);
-#endif
-#ifndef __HAVE_ARCH_STRLEN
-extern __kernel_size_t strlen(const char *);
-#endif
-#ifndef __HAVE_ARCH_STRNLEN
-extern __kernel_size_t strnlen(const char *,__kernel_size_t);
-#endif
-
-#ifndef __HAVE_ARCH_MEMSET
-extern void * memset(void *,int,__kernel_size_t);
-#endif
-#ifndef __HAVE_ARCH_MEMCPY
-extern void * memcpy(void *,const void *,__kernel_size_t);
-#endif
-#ifndef __HAVE_ARCH_MEMMOVE
-extern void * memmove(void *,const void *,__kernel_size_t);
-#endif
-#ifndef __HAVE_ARCH_MEMSCAN
-extern void * memscan(void *,int,__kernel_size_t);
-#endif
-#ifndef __HAVE_ARCH_MEMCMP
-extern int memcmp(const void *,const void *,__kernel_size_t);
-#endif
-#ifndef __HAVE_ARCH_MEMCHR
-extern void * memchr(const void *,int,__kernel_size_t);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-#endif /* _LINUX_STRING_H_ */
diff --git a/xen/include/xeno/time.h b/xen/include/xeno/time.h
deleted file mode 100644 (file)
index 10cd3b7..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
- ****************************************************************************
- * (C) 2002 - Rolf Neugebauer - Intel Research Cambridge
- ****************************************************************************
- *
- *        File: time.h
- *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
- *     Changes: 
- *              
- *        Date: Nov 2002
- * 
- * Environment: Xen Hypervisor
- * Description: This file provides a one stop shop for all time related
- *              issues within the hypervisor. 
- * 
- *              The Hypervisor provides the following notions of time:
- *              Cycle Counter Time, System Time, Wall Clock Time, and 
- *              Domain Virtual Time.
- *
- ****************************************************************************
- * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
- ****************************************************************************
- */
-
-
-
-#ifndef __XENO_TIME_H__
-#define __XENO_TIME_H__
-
-#include <asm/ptrace.h>  /* XXX Only used for do_timer which should be moved */
-#include <asm/time.h>    /* pull in architecture specific time definition */
-#include <xeno/types.h>
-#include <hypervisor-ifs/hypervisor-if.h>
-
-/*
- * Init time
- */
-extern int init_xeno_time();
-
-
-/*
- * System Time
- * 64 bit value containing the nanoseconds elapsed since boot time.
- * This value is adjusted by frequency drift.
- * NOW() returns the current time.
- * The other macros are for convenience to approximate short intervals
- * of real time into system time 
- */
-
-s_time_t get_s_time(void);
-
-#define NOW()                          ((s_time_t)get_s_time())
-#define SECONDS(_s)                    (((s_time_t)(_s))  * 1000000000ULL )
-#define MILLISECS(_ms)         (((s_time_t)(_ms)) * 1000000ULL )
-#define MICROSECS(_us)         (((s_time_t)(_us)) * 1000ULL )
-#define Time_Max                       ((s_time_t) 0x7fffffffffffffffLL)
-#define FOREVER                                Time_Max
-
-/* Wall Clock Time */
-struct timeval {
-    long            tv_sec;         /* seconds */
-    long            tv_usec;        /* microseconds */
-};
-  
-extern void update_dom_time(shared_info_t *si);
-extern void do_settime(unsigned long secs, unsigned long usecs, 
-                       u64 system_time_base);
-extern void do_timer(struct pt_regs *regs);
-
-#endif /* __XENO_TIME_H__ */
diff --git a/xen/include/xeno/timer.h b/xen/include/xeno/timer.h
deleted file mode 100644 (file)
index 4c1ff6d..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#ifndef _LINUX_TIMER_H
-#define _LINUX_TIMER_H
-
-#include <xeno/config.h>
-#include <xeno/list.h>
-
-/*
- * In Linux 2.4, static timers have been removed from the kernel.
- * Timers may be dynamically created and destroyed, and should be initialized
- * by a call to init_timer() upon creation.
- *
- * The "data" field enables use of a common timeout function for several
- * timeouts. You can use this field to distinguish between the different
- * invocations.
- *
- * RN: Unlike the Linux timers, which are executed at the periodic timer
- *     interrupt, in Xen, the timer list is only checked "occasionally", thus
- *     its accuracy might be somewhat worse than under Linux. However, the
- *     hypervisor should be purely event-driven and, in fact, in the current
- *     implementation, timers are only used for watchdog purpose at a very
- *     coarse granularity anyway. Thus this is not a problem.
- */
-struct timer_list {
-       struct list_head list;
-       unsigned long expires;          /* jiffies */
-       unsigned long data;
-       void (*function)(unsigned long);
-};
-
-extern void add_timer(struct timer_list * timer);
-extern int del_timer(struct timer_list * timer);
-
-#ifdef CONFIG_SMP
-extern int del_timer_sync(struct timer_list * timer);
-extern void sync_timers(void);
-#else
-#define del_timer_sync(t)      del_timer(t)
-#define sync_timers()          do { } while (0)
-#endif
-
-/*
- * mod_timer is a more efficient way to update the expire field of an
- * active timer (if the timer is inactive it will be activated)
- * mod_timer(a,b) is equivalent to del_timer(a); a->expires = b; add_timer(a).
- * If the timer is known to be not pending (ie, in the handler), mod_timer
- * is less efficient than a->expires = b; add_timer(a).
- */
-int mod_timer(struct timer_list *timer, unsigned long expires);
-
-extern void it_real_fn(unsigned long);
-
-static inline void init_timer(struct timer_list * timer)
-{
-       timer->list.next = timer->list.prev = NULL;
-}
-
-static inline int timer_pending (const struct timer_list * timer)
-{
-       return timer->list.next != NULL;
-}
-
-/*
- *     These inlines deal with timer wrapping correctly. You are 
- *     strongly encouraged to use them
- *     1. Because people otherwise forget
- *     2. Because if the timer wrap changes in future you wont have to
- *        alter your driver code.
- *
- * time_after(a,b) returns true if the time a is after time b.
- *
- * Do this with "<0" and ">=0" to only test the sign of the result. A
- * good compiler would generate better code (and a really good compiler
- * wouldn't care). Gcc is currently neither.
- */
-#define time_after(a,b)                ((long)(b) - (long)(a) < 0)
-#define time_before(a,b)       time_after(b,a)
-
-#define time_after_eq(a,b)     ((long)(a) - (long)(b) >= 0)
-#define time_before_eq(a,b)    time_after_eq(b,a)
-
-#endif
diff --git a/xen/include/xeno/timex.h b/xen/include/xeno/timex.h
deleted file mode 100644 (file)
index 3a00a26..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*****************************************************************************
- *                                                                           *
- * Copyright (c) David L. Mills 1993                                         *
- *                                                                           *
- * Permission to use, copy, modify, and distribute this software and its     *
- * documentation for any purpose and without fee is hereby granted, provided *
- * that the above copyright notice appears in all copies and that both the   *
- * copyright notice and this permission notice appear in supporting          *
- * documentation, and that the name University of Delaware not be used in    *
- * advertising or publicity pertaining to distribution of the software       *
- * without specific, written prior permission.  The University of Delaware   *
- * makes no representations about the suitability this software for any      *
- * purpose.  It is provided "as is" without express or implied warranty.     *
- *                                                                           *
- *****************************************************************************/
-
-/*
- * Modification history timex.h
- *
- * 29 Dec 97   Russell King
- *     Moved CLOCK_TICK_RATE, CLOCK_TICK_FACTOR and FINETUNE to asm/timex.h
- *     for ARM machines
- *
- *  9 Jan 97    Adrian Sun
- *      Shifted LATCH define to allow access to alpha machines.
- *
- * 26 Sep 94   David L. Mills
- *     Added defines for hybrid phase/frequency-lock loop.
- *
- * 19 Mar 94   David L. Mills
- *     Moved defines from kernel routines to header file and added new
- *     defines for PPS phase-lock loop.
- *
- * 20 Feb 94   David L. Mills
- *     Revised status codes and structures for external clock and PPS
- *     signal discipline.
- *
- * 28 Nov 93   David L. Mills
- *     Adjusted parameters to improve stability and increase poll
- *     interval.
- *
- * 17 Sep 93    David L. Mills
- *      Created file $NTP/include/sys/timex.h
- * 07 Oct 93    Torsten Duwe
- *      Derived linux/timex.h
- * 1995-08-13    Torsten Duwe
- *      kernel PLL updated to 1994-12-13 specs (rfc-1589)
- * 1997-08-30    Ulrich Windl
- *      Added new constant NTP_PHASE_LIMIT
- */
-#ifndef _LINUX_TIMEX_H
-#define _LINUX_TIMEX_H
-
-#include <asm/param.h>
-
-/*
- * The following defines establish the engineering parameters of the PLL
- * model. The HZ variable establishes the timer interrupt frequency, 100 Hz
- * for the SunOS kernel, 256 Hz for the Ultrix kernel and 1024 Hz for the
- * OSF/1 kernel. The SHIFT_HZ define expresses the same value as the
- * nearest power of two in order to avoid hardware multiply operations.
- */
-#if HZ >= 12 && HZ < 24
-# define SHIFT_HZ      4
-#elif HZ >= 24 && HZ < 48
-# define SHIFT_HZ      5
-#elif HZ >= 48 && HZ < 96
-# define SHIFT_HZ      6
-#elif HZ >= 96 && HZ < 192
-# define SHIFT_HZ      7
-#elif HZ >= 192 && HZ < 384
-# define SHIFT_HZ      8
-#elif HZ >= 384 && HZ < 768
-# define SHIFT_HZ      9
-#elif HZ >= 768 && HZ < 1536
-# define SHIFT_HZ      10
-#else
-# error You lose.
-#endif
-
-/*
- * SHIFT_KG and SHIFT_KF establish the damping of the PLL and are chosen
- * for a slightly underdamped convergence characteristic. SHIFT_KH
- * establishes the damping of the FLL and is chosen by wisdom and black
- * art.
- *
- * MAXTC establishes the maximum time constant of the PLL. With the
- * SHIFT_KG and SHIFT_KF values given and a time constant range from
- * zero to MAXTC, the PLL will converge in 15 minutes to 16 hours,
- * respectively.
- */
-#define SHIFT_KG 6             /* phase factor (shift) */
-#define SHIFT_KF 16            /* PLL frequency factor (shift) */
-#define SHIFT_KH 2             /* FLL frequency factor (shift) */
-#define MAXTC 6                        /* maximum time constant (shift) */
-
-/*
- * The SHIFT_SCALE define establishes the decimal point of the time_phase
- * variable which serves as an extension to the low-order bits of the
- * system clock variable. The SHIFT_UPDATE define establishes the decimal
- * point of the time_offset variable which represents the current offset
- * with respect to standard time. The FINEUSEC define represents 1 usec in
- * scaled units.
- *
- * SHIFT_USEC defines the scaling (shift) of the time_freq and
- * time_tolerance variables, which represent the current frequency
- * offset and maximum frequency tolerance.
- *
- * FINEUSEC is 1 us in SHIFT_UPDATE units of the time_phase variable.
- */
-#define SHIFT_SCALE 22         /* phase scale (shift) */
-#define SHIFT_UPDATE (SHIFT_KG + MAXTC) /* time offset scale (shift) */
-#define SHIFT_USEC 16          /* frequency offset scale (shift) */
-#define FINEUSEC (1L << SHIFT_SCALE) /* 1 us in phase units */
-
-#define MAXPHASE 512000L        /* max phase error (us) */
-#define MAXFREQ (512L << SHIFT_USEC)  /* max frequency error (ppm) */
-#define MAXTIME (200L << PPS_AVG) /* max PPS error (jitter) (200 us) */
-#define MINSEC 16L              /* min interval between updates (s) */
-#define MAXSEC 1200L            /* max interval between updates (s) */
-#define        NTP_PHASE_LIMIT (MAXPHASE << 5) /* beyond max. dispersion */
-
-/*
- * The following defines are used only if a pulse-per-second (PPS)
- * signal is available and connected via a modem control lead, such as
- * produced by the optional ppsclock feature incorporated in the Sun
- * asynch driver. They establish the design parameters of the frequency-
- * lock loop used to discipline the CPU clock oscillator to the PPS
- * signal.
- *
- * PPS_AVG is the averaging factor for the frequency loop, as well as
- * the time and frequency dispersion.
- *
- * PPS_SHIFT and PPS_SHIFTMAX specify the minimum and maximum
- * calibration intervals, respectively, in seconds as a power of two.
- *
- * PPS_VALID is the maximum interval before the PPS signal is considered
- * invalid and protocol updates used directly instead.
- *
- * MAXGLITCH is the maximum interval before a time offset of more than
- * MAXTIME is believed.
- */
-#define PPS_AVG 2              /* pps averaging constant (shift) */
-#define PPS_SHIFT 2            /* min interval duration (s) (shift) */
-#define PPS_SHIFTMAX 8         /* max interval duration (s) (shift) */
-#define PPS_VALID 120          /* pps signal watchdog max (s) */
-#define MAXGLITCH 30           /* pps signal glitch max (s) */
-
-/*
- * Pick up the architecture specific timex specifications
- */
-#include <asm/timex.h>
-
-/* LATCH is used in the interval timer and ftape setup. */
-#define LATCH  ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */
-
-/*
- * syscall interface - used (mainly by NTP daemon)
- * to discipline kernel clock oscillator
- */
-struct timex {
-       unsigned int modes;     /* mode selector */
-       long offset;            /* time offset (usec) */
-       long freq;              /* frequency offset (scaled ppm) */
-       long maxerror;          /* maximum error (usec) */
-       long esterror;          /* estimated error (usec) */
-       int status;             /* clock command/status */
-       long constant;          /* pll time constant */
-       long precision;         /* clock precision (usec) (read only) */
-       long tolerance;         /* clock frequency tolerance (ppm)
-                                * (read only)
-                                */
-       struct timeval time;    /* (read only) */
-       long tick;              /* (modified) usecs between clock ticks */
-
-       long ppsfreq;           /* pps frequency (scaled ppm) (ro) */
-       long jitter;            /* pps jitter (us) (ro) */
-       int shift;              /* interval duration (s) (shift) (ro) */
-       long stabil;            /* pps stability (scaled ppm) (ro) */
-       long jitcnt;            /* jitter limit exceeded (ro) */
-       long calcnt;            /* calibration intervals (ro) */
-       long errcnt;            /* calibration errors (ro) */
-       long stbcnt;            /* stability limit exceeded (ro) */
-
-       int  :32; int  :32; int  :32; int  :32;
-       int  :32; int  :32; int  :32; int  :32;
-       int  :32; int  :32; int  :32; int  :32;
-};
-
-/*
- * Mode codes (timex.mode)
- */
-#define ADJ_OFFSET             0x0001  /* time offset */
-#define ADJ_FREQUENCY          0x0002  /* frequency offset */
-#define ADJ_MAXERROR           0x0004  /* maximum time error */
-#define ADJ_ESTERROR           0x0008  /* estimated time error */
-#define ADJ_STATUS             0x0010  /* clock status */
-#define ADJ_TIMECONST          0x0020  /* pll time constant */
-#define ADJ_TICK               0x4000  /* tick value */
-#define ADJ_OFFSET_SINGLESHOT  0x8001  /* old-fashioned adjtime */
-
-/* xntp 3.4 compatibility names */
-#define MOD_OFFSET     ADJ_OFFSET
-#define MOD_FREQUENCY  ADJ_FREQUENCY
-#define MOD_MAXERROR   ADJ_MAXERROR
-#define MOD_ESTERROR   ADJ_ESTERROR
-#define MOD_STATUS     ADJ_STATUS
-#define MOD_TIMECONST  ADJ_TIMECONST
-#define MOD_CLKB       ADJ_TICK
-#define MOD_CLKA       ADJ_OFFSET_SINGLESHOT /* 0x8000 in original */
-
-
-/*
- * Status codes (timex.status)
- */
-#define STA_PLL                0x0001  /* enable PLL updates (rw) */
-#define STA_PPSFREQ    0x0002  /* enable PPS freq discipline (rw) */
-#define STA_PPSTIME    0x0004  /* enable PPS time discipline (rw) */
-#define STA_FLL                0x0008  /* select frequency-lock mode (rw) */
-
-#define STA_INS                0x0010  /* insert leap (rw) */
-#define STA_DEL                0x0020  /* delete leap (rw) */
-#define STA_UNSYNC     0x0040  /* clock unsynchronized (rw) */
-#define STA_FREQHOLD   0x0080  /* hold frequency (rw) */
-
-#define STA_PPSSIGNAL  0x0100  /* PPS signal present (ro) */
-#define STA_PPSJITTER  0x0200  /* PPS signal jitter exceeded (ro) */
-#define STA_PPSWANDER  0x0400  /* PPS signal wander exceeded (ro) */
-#define STA_PPSERROR   0x0800  /* PPS signal calibration error (ro) */
-
-#define STA_CLOCKERR   0x1000  /* clock hardware fault (ro) */
-
-#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
-    STA_PPSERROR | STA_CLOCKERR) /* read-only bits */
-
-/*
- * Clock states (time_state)
- */
-#define TIME_OK                0       /* clock synchronized, no leap second */
-#define TIME_INS       1       /* insert leap second */
-#define TIME_DEL       2       /* delete leap second */
-#define TIME_OOP       3       /* leap second in progress */
-#define TIME_WAIT      4       /* leap second has occurred */
-#define TIME_ERROR     5       /* clock not synchronized */
-#define TIME_BAD       TIME_ERROR /* bw compat */
-
-#ifdef __KERNEL__
-/*
- * kernel variables
- * Note: maximum error = NTP synch distance = dispersion + delay / 2;
- * estimated error = NTP dispersion.
- */
-extern long tick;                      /* timer interrupt period */
-extern int tickadj;                    /* amount of adjustment per tick */
-
-/*
- * phase-lock loop variables
- */
-extern int time_state;         /* clock status */
-extern int time_status;                /* clock synchronization status bits */
-extern long time_offset;       /* time adjustment (us) */
-extern long time_constant;     /* pll time constant */
-extern long time_tolerance;    /* frequency tolerance (ppm) */
-extern long time_precision;    /* clock precision (us) */
-extern long time_maxerror;     /* maximum error */
-extern long time_esterror;     /* estimated error */
-
-extern long time_phase;                /* phase offset (scaled us) */
-extern long time_freq;         /* frequency offset (scaled ppm) */
-extern long time_adj;          /* tick adjust (scaled 1 / HZ) */
-extern long time_reftime;      /* time at last adjustment (s) */
-
-extern long time_adjust;       /* The amount of adjtime left */
-
-/* interface variables pps->timer interrupt */
-extern long pps_offset;                /* pps time offset (us) */
-extern long pps_jitter;                /* time dispersion (jitter) (us) */
-extern long pps_freq;          /* frequency offset (scaled ppm) */
-extern long pps_stabil;                /* frequency dispersion (scaled ppm) */
-extern long pps_valid;         /* pps signal watchdog counter */
-
-/* interface variables pps->adjtimex */
-extern int pps_shift;          /* interval duration (s) (shift) */
-extern long pps_jitcnt;                /* jitter limit exceeded */
-extern long pps_calcnt;                /* calibration intervals */
-extern long pps_errcnt;                /* calibration errors */
-extern long pps_stbcnt;                /* stability limit exceeded */
-
-#endif /* KERNEL */
-
-#endif /* LINUX_TIMEX_H */
diff --git a/xen/include/xeno/tqueue.h b/xen/include/xeno/tqueue.h
deleted file mode 100644 (file)
index 9d46fd9..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * tqueue.h --- task queue handling for Linux.
- *
- * Mostly based on a proposed bottom-half replacement code written by
- * Kai Petzke, wpp@marie.physik.tu-berlin.de.
- *
- * Modified for use in the Linux kernel by Theodore Ts'o,
- * tytso@mit.edu.  Any bugs are my fault, not Kai's.
- *
- * The original comment follows below.
- */
-
-#ifndef _LINUX_TQUEUE_H
-#define _LINUX_TQUEUE_H
-
-#include <xeno/spinlock.h>
-#include <xeno/list.h>
-#include <asm/bitops.h>
-#include <asm/system.h>
-
-/*
- * New proposed "bottom half" handlers:
- * (C) 1994 Kai Petzke, wpp@marie.physik.tu-berlin.de
- *
- * Advantages:
- * - Bottom halfs are implemented as a linked list.  You can have as many
- *   of them, as you want.
- * - No more scanning of a bit field is required upon call of a bottom half.
- * - Support for chained bottom half lists.  The run_task_queue() function can be
- *   used as a bottom half handler.  This is for example useful for bottom
- *   halfs, which want to be delayed until the next clock tick.
- *
- * Notes:
- * - Bottom halfs are called in the reverse order that they were linked into
- *   the list.
- */
-
-struct tq_struct {
-       struct list_head list;          /* linked list of active bh's */
-       unsigned long sync;             /* must be initialized to zero */
-       void (*routine)(void *);        /* function to call */
-       void *data;                     /* argument to function */
-};
-
-/*
- * Emit code to initialise a tq_struct's routine and data pointers
- */
-#define PREPARE_TQUEUE(_tq, _routine, _data)                   \
-       do {                                                    \
-               (_tq)->routine = _routine;                      \
-               (_tq)->data = _data;                            \
-       } while (0)
-
-/*
- * Emit code to initialise all of a tq_struct
- */
-#define INIT_TQUEUE(_tq, _routine, _data)                      \
-       do {                                                    \
-               INIT_LIST_HEAD(&(_tq)->list);                   \
-               (_tq)->sync = 0;                                \
-               PREPARE_TQUEUE((_tq), (_routine), (_data));     \
-       } while (0)
-
-typedef struct list_head task_queue;
-
-#define DECLARE_TASK_QUEUE(q)  LIST_HEAD(q)
-#define TQ_ACTIVE(q)           (!list_empty(&q))
-
-extern task_queue tq_disk;
-
-/*
- * To implement your own list of active bottom halfs, use the following
- * two definitions:
- *
- * DECLARE_TASK_QUEUE(my_tqueue);
- * struct tq_struct my_task = {
- *     routine: (void (*)(void *)) my_routine,
- *     data: &my_data
- * };
- *
- * To activate a bottom half on a list, use:
- *
- *     queue_task(&my_task, &my_tqueue);
- *
- * To later run the queued tasks use
- *
- *     run_task_queue(&my_tqueue);
- *
- * This allows you to do deferred processing.  For example, you could
- * have a task queue called tq_timer, which is executed within the timer
- * interrupt.
- */
-
-extern spinlock_t tqueue_lock;
-
-/*
- * Queue a task on a tq.  Return non-zero if it was successfully
- * added.
- */
-static inline int queue_task(struct tq_struct *bh_pointer, task_queue *bh_list)
-{
-       int ret = 0;
-       if (!test_and_set_bit(0,&bh_pointer->sync)) {
-               unsigned long flags;
-               spin_lock_irqsave(&tqueue_lock, flags);
-               list_add_tail(&bh_pointer->list, bh_list);
-               spin_unlock_irqrestore(&tqueue_lock, flags);
-               ret = 1;
-       }
-       return ret;
-}
-
-/*
- * Call all "bottom halfs" on a given list.
- */
-
-extern void __run_task_queue(task_queue *list);
-
-static inline void run_task_queue(task_queue *list)
-{
-       if (TQ_ACTIVE(*list))
-               __run_task_queue(list);
-}
-
-#endif /* _LINUX_TQUEUE_H */
diff --git a/xen/include/xeno/trace.h b/xen/include/xeno/trace.h
deleted file mode 100644 (file)
index fb8a214..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/******************************************************************************
- * include/xeno/trace.h
- *
- * Xen Trace Buffer
- *
- * Copyright (C) 2003 by Intel Research Cambridge
- *
- * Author: Mark Williamson, mark.a.williamson@intel.com
- * Date:   January 2004
- *
- * The trace buffer code is designed to allow debugging traces of Xen to be
- * generated on UP / SMP machines.  Each trace entry is timestamped so that
- * it's possible to reconstruct a chronological record of trace events.
- *
- * Access to the trace buffers is via a dom0 hypervisor op and analysis of
- * trace buffer contents can then be performed using a userland tool.
- *
- * See also common/trace.c and the dom0 op in include/hypervisor-ifs/dom0_ops.h
- */
-
-#ifndef __XENO_TRACE_H__
-#define __XENO_TRACE_H__
-
-#include <hypervisor-ifs/trace.h>
-
-#ifdef TRACE_BUFFER
-
-#include <xeno/spinlock.h>
-#include <asm/page.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <asm/atomic.h>
-#include <asm/current.h>
-#include <asm/msr.h>
-#include <hypervisor-ifs/dom0_ops.h>
-
-/* Used to initialise trace buffer functionality */
-void init_trace_bufs(void);
-
-/* used to retrieve the physical address of the trace buffers */
-int get_tb_info(dom0_gettbufs_t *st);
-
-/**
- * trace - Enters a trace tuple into the trace buffer for the current CPU.
- * @event: the event type being logged
- * @d1...d5: the data items for the event being logged
- *
- * Logs a trace record into the appropriate buffer.  Returns nonzero on
- * failure, otherwise 0.  Failure occurs only if the trace buffers are not yet
- * initialised.
- */
-static inline int trace(u32 event, u32 d1, u32 d2, u32 d3, u32 d4, u32 d5)
-{
-    extern struct t_buf *t_bufs[];      /* global array of pointers to bufs */
-    extern int tb_init_done;            /* set when buffers are initialised */
-    unsigned long flags;                /* for saving interrupt flags       */
-    struct t_buf *buf;                  /* the buffer we're working on      */
-    struct t_rec *rec;                  /* next record to fill out          */
-
-
-    if ( !tb_init_done )
-        return -1;
-
-    buf = t_bufs[smp_processor_id()];
-    rec = buf->head_ptr;
-
-    spin_lock_irqsave(&buf->lock, flags);
-
-    rdtscll(rec->cycles);
-    rec->event = event;
-    rec->d1 = d1;
-    rec->d2 = d2;
-    rec->d3 = d3;
-    rec->d4 = d4;
-    rec->d5 = d5;
-
-    wmb(); /* above must be visible before reader sees index updated */
-
-    if ( likely(buf->head_ptr < (buf->vdata + buf->size - 1)) )
-    {
-        buf->head_ptr++;
-        buf->head++;
-    }
-    else
-    {
-        buf->head = 0;
-        buf->head_ptr = buf->vdata;
-    }
-
-    spin_unlock_irqrestore(&buf->lock, flags);
-    
-    return 0;
-}
-
-/* Avoids troubling the caller with casting their arguments to a trace macro */
-#define trace_do_casts(e,d1,d2,d3,d4,d5)  \
-                 trace(e,                 \
-                       (unsigned long)d1, \
-                       (unsigned long)d2, \
-                       (unsigned long)d3, \
-                       (unsigned long)d4, \
-                       (unsigned long)d5)
-
-/* Convenience macros for calling the trace function. */
-#define TRACE_0D(event)                trace_do_casts(event,0, 0, 0, 0, 0 )
-#define TRACE_1D(event,d)              trace_do_casts(event,d, 0, 0, 0, 0 )
-#define TRACE_2D(event,d1,d2)          trace_do_casts(event,d1,d2,0, 0, 0 )
-#define TRACE_3D(event,d1,d2,d3)       trace_do_casts(event,d1,d2,d3,0, 0 )
-#define TRACE_4D(event,d1,d2,d3,d4)    trace_do_casts(event,d1,d2,d3,d4,0 )
-#define TRACE_5D(event,d1,d2,d3,d4,d5) trace_do_casts(event,d1,d2,d3,d4,d5)
-
-#else
-
-#define init_trace_bufs() ((void)0)
-
-#define TRACE_0D(event)                ((void)0)
-#define TRACE_1D(event,d)              ((void)0)
-#define TRACE_2D(event,d1,d2)          ((void)0)
-#define TRACE_3D(event,d1,d2,d3)       ((void)0)
-#define TRACE_4D(event,d1,d2,d3,d4)    ((void)0)
-#define TRACE_5D(event,d1,d2,d3,d4,d5) ((void)0)
-
-#endif /* TRACE_BUFFER */
-
-#endif /* __XENO_TRACE_H__ */
diff --git a/xen/include/xeno/types.h b/xen/include/xeno/types.h
deleted file mode 100644 (file)
index 0299f74..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef __TYPES_H__
-#define __TYPES_H__
-
-#include <asm/types.h>
-
-#ifndef NULL
-#define NULL ((void*)0)
-#endif
-
-#define INT_MAX         ((int)(~0U>>1))
-#define INT_MIN         (-INT_MAX - 1)
-#define UINT_MAX        (~0U)
-#define LONG_MAX        ((long)(~0UL>>1))
-#define LONG_MIN        (-LONG_MAX - 1)
-#define ULONG_MAX       (~0UL)
-
-/* bsd */
-typedef unsigned char           u_char;
-typedef unsigned short          u_short;
-typedef unsigned int            u_int;
-typedef unsigned long           u_long;
-
-/* sysv */
-typedef unsigned char           unchar;
-typedef unsigned short          ushort;
-typedef unsigned int            uint;
-typedef unsigned long           ulong;
-
-#ifndef __BIT_TYPES_DEFINED__
-#define __BIT_TYPES_DEFINED__
-
-typedef         __u8            u_int8_t;
-typedef         __s8            int8_t;
-typedef         __u16           u_int16_t;
-typedef         __s16           int16_t;
-typedef         __u32           u_int32_t;
-typedef         __s32           int32_t;
-
-#endif /* !(__BIT_TYPES_DEFINED__) */
-
-typedef         __u8            uint8_t;
-typedef         __u16           uint16_t;
-typedef         __u32           uint32_t;
-typedef         __u64           uint64_t;
-
-
-
-#endif /* __TYPES_H__ */
diff --git a/xen/include/xeno/vbd.h b/xen/include/xeno/vbd.h
deleted file mode 100644 (file)
index 3c6a2de..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-** include/xeno/vbd.h: 
-** -- xen internal declarations + prototypes for virtual block devices
-*/
-
-#ifndef __VBD_H__
-#define __VBD_H__
-
-#include <hypervisor-ifs/block.h>
-#include <hypervisor-ifs/vbd.h>
-
-#include <xeno/rbtree.h>
-
-/* An entry in a list of xen_extents. */
-typedef struct _xen_extent_le { 
-    xen_extent_t extent;               /* an individual extent */
-    struct _xen_extent_le *next;       /* and a pointer to the next */ 
-} xen_extent_le_t; 
-
-/*
- * This is what a vbd looks like from the p.o.v. of xen: essentially a list of
- * xen_extents which a given domain refers to by a particular 16bit id. Each
- * domain has a lookup structure to map from these to the relevant VBD.
- */
-typedef struct _vbd { 
-    unsigned short    vdevice;   /* what the domain refers to this vbd as */
-    unsigned char     mode;      /* VBD_MODE_{R,W} */
-    unsigned char     type;      /* XD_TYPE_xxx */
-    xen_extent_le_t  *extents;   /* list of xen_extents making up this vbd */
-    rb_node_t         rb;        /* for linking into R-B tree lookup struct */
-} vbd_t; 
-
-/*
- * Internal forms of 'vbd_create' and 'vbd_grow. Used when setting up real 
- * physical device access for domain 0.
- */
-long __vbd_create(struct task_struct *p,
-                  unsigned short vdevice,
-                  unsigned char mode,
-                  unsigned char type);
-long __vbd_grow(struct task_struct *p,
-                unsigned short vdevice,
-                xen_extent_t *extent);
-
-/* This is the main API, accessible from guest OSes. */
-long vbd_create(vbd_create_t *create_params); 
-long vbd_grow(vbd_grow_t *grow_params); 
-long vbd_shrink(vbd_shrink_t *shrink_params);
-long vbd_setextents(vbd_setextents_t *setextents_params);
-long vbd_delete(vbd_delete_t *delete_params); 
-long vbd_probe(vbd_probe_t *probe_params); 
-long vbd_info(vbd_info_t *info_params); 
-
-void destroy_all_vbds(struct task_struct *p);
-
-/* Describes a [partial] disk extent (part of a block io request) */
-typedef struct {
-    unsigned short dev;
-    unsigned short nr_sects;
-    unsigned long  buffer;
-    xen_sector_t   sector_number;
-} phys_seg_t;
-
-
-int vbd_translate(phys_seg_t *pseg, struct task_struct *p, int operation); 
-
-#endif /* __VBD_H__ */
diff --git a/xen/include/xeno/version.h b/xen/include/xeno/version.h
deleted file mode 100644 (file)
index a0bbfa9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
-#define LINUX_VERSION_CODE KERNEL_VERSION(2,4,21)
diff --git a/xen/include/xeno/vif.h b/xen/include/xeno/vif.h
deleted file mode 100644 (file)
index 23626b7..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/* vif.h
- * 
- * This is the hypervisor end of the network code.  The net_ring structure
- * stored in each vif is placed on a shared page to interact with the guest VM.
- *
- * Copyright (c) 2002-2003, A K Warfield and K A Fraser
- */
-
-#ifndef __XENO_VIF_H__
-#define __XENO_VIF_H__
-
-/* virtual network interface struct and associated defines. */
-/* net_vif_st is the larger struct that describes a virtual network interface
- * it contains a pointer to the net_ring_t structure that needs to be on a 
- * shared page between the hypervisor and guest.  The vif struct is private 
- * to the hypervisor and is used primarily as a container to allow routing 
- * and interface administration.  This define should eventually be moved to 
- * a non-shared interface file, as it is of no relevance to the guest.
- */
-
-#include <hypervisor-ifs/network.h>
-
-#include <xeno/if_ether.h>
-
-extern struct net_device *the_dev;
-
-/*
- * shadow ring structures are used to protect the descriptors from tampering 
- * after they have been passed to the hypervisor.
- * 
- * XENNET_TX_RING_SIZE and XENNET_RX_RING_SIZE are defined in the shared
- * network.h. 
- */
-
-typedef struct rx_shadow_entry_st 
-{
-    unsigned short id;
-    unsigned short _pad;
-    unsigned long  pte_ptr;
-    unsigned long  buf_pfn;
-} rx_shadow_entry_t;
-
-typedef struct tx_shadow_entry_st 
-{
-    unsigned short id;
-    unsigned short size;
-    void          *header;
-    unsigned long  payload;
-} tx_shadow_entry_t;
-
-typedef struct net_vif_st {
-    /* The shared rings and indexes. */
-    net_ring_t         *shared_rings;
-    net_idx_t          *shared_idxs;
-
-    /* The private rings and indexes. */
-    rx_shadow_entry_t rx_shadow_ring[XENNET_RX_RING_SIZE];
-    NET_RING_IDX rx_prod;  /* More buffers for filling go here. */
-    NET_RING_IDX rx_cons;  /* Next buffer to fill is here. */
-    tx_shadow_entry_t tx_shadow_ring[XENNET_TX_RING_SIZE];
-    NET_RING_IDX tx_prod;  /* More packets for sending go here. */
-    NET_RING_IDX tx_cons;  /* Next packet to send is here. */
-
-    /* Private indexes into shared ring. */
-    NET_RING_IDX rx_req_cons;
-    NET_RING_IDX rx_resp_prod; /* private version of shared variable */
-    NET_RING_IDX tx_req_cons;
-    NET_RING_IDX tx_resp_prod; /* private version of shared variable */
-
-    /* Usage accounting */
-    long long total_bytes_sent;
-    long long total_bytes_received;
-    long long total_packets_sent;
-    long long total_packets_received;
-
-    /* Trasnmit shaping: allow 'credit_bytes' everu 'credit_usec'. */
-    unsigned long   credit_bytes;
-    unsigned long   credit_usec;
-    unsigned long   remaining_credit;
-    struct ac_timer credit_timeout;
-
-    /* Miscellaneous private stuff. */
-    struct task_struct *domain;
-    unsigned int idx; /* index within domain */
-    struct list_head    list;     /* scheduling list */
-    atomic_t            refcnt;
-    spinlock_t          rx_lock, tx_lock;
-    unsigned char       vmac[ETH_ALEN];
-} net_vif_t;
-
-#define get_vif(_v) (atomic_inc(&(_v)->refcnt))
-#define put_vif(_v)                                                \
-do {                                                               \
-    if ( atomic_dec_and_test(&(_v)->refcnt) ) destroy_net_vif(_v); \
-} while (0)                                                        \
-
-/* vif prototypes */
-net_vif_t *create_net_vif(domid_t dom);
-void destroy_net_vif(net_vif_t *vif);
-void unlink_net_vif(net_vif_t *vif);
-net_vif_t *net_get_target_vif(u8 *data, unsigned int len, net_vif_t *src_vif);
-net_vif_t *find_net_vif(domid_t dom, unsigned int idx);
-void delete_all_domain_vfr_rules(struct task_struct *p);
-
-/*
- * Return values from net_get_target_vif:
- *  VIF_PHYS -- Send to physical NIC
- *  VIF_DROP -- Drop this packet
- *  others   -- Send to specified VIF (reference held on return)
- */
-#define VIF_PHYS  ((net_vif_t *)0)
-#define VIF_DROP  ((net_vif_t *)1)
-#define VIF_LOCAL(_vif) ((unsigned long)(_vif) > 1)
-
-#endif /* __XENO_VIF_H__ */
-
index e4d791a585a175c50c0001e115e843ef3ac88f01..0761ba134303e2875cca14c5ce8ad1c5e5ffce13 100644 (file)
 #include <asm/uaccess.h>
 #include <asm/system.h>
 #include <asm/bitops.h>
-#include <xeno/config.h>
-#include <xeno/delay.h>
-#include <xeno/lib.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/mm.h>
-#include <xeno/socket.h>
-#include <xeno/sockios.h>
-#include <xeno/errno.h>
-#include <xeno/interrupt.h>
-#include <xeno/if_ether.h>
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
-#include <xeno/skbuff.h>
-#include <xeno/brlock.h>
-#include <xeno/init.h>
-#include <xeno/module.h>
-#include <xeno/event.h>
+#include <xen/config.h>
+#include <xen/delay.h>
+#include <xen/lib.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/mm.h>
+#include <xen/socket.h>
+#include <xen/sockios.h>
+#include <xen/errno.h>
+#include <xen/interrupt.h>
+#include <xen/if_ether.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
+#include <xen/skbuff.h>
+#include <xen/brlock.h>
+#include <xen/init.h>
+#include <xen/module.h>
+#include <xen/event.h>
 #include <asm/domain_page.h>
 #include <asm/pgalloc.h>
 #include <asm/io.h>
-#include <xeno/perfc.h>
+#include <xen/perfc.h>
 
 #define BUG_TRAP ASSERT
 #define notifier_call_chain(_a,_b,_c) ((void)0)
index c460b9497ea85ef6f45f4cd4b6f3234e04a36cea..5bc1ad4c5e2a3de5ec538c1e288298aa17ea03cb 100644 (file)
  *     2 of the License, or (at your option) any later version.
  */
 
-#include <xeno/config.h> 
-#include <xeno/lib.h> 
+#include <xen/config.h> 
+#include <xen/lib.h> 
 #include <asm/uaccess.h>
 #include <asm/system.h>
 #include <asm/bitops.h>
-#include <xeno/types.h>
-//#include <xeno/kernel.h>
-#include <xeno/sched.h>
-//#include <xeno/string.h>
-#include <xeno/mm.h>
-#include <xeno/socket.h>
-#include <xeno/sockios.h>
-//#include <xeno/in.h>
-#include <xeno/errno.h>
-#include <xeno/interrupt.h>
-#include <xeno/if_ether.h>
-//#include <xeno/inet.h>
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
-//#include <xeno/proc_fs.h>
-#include <xeno/init.h>
+#include <xen/types.h>
+//#include <xen/kernel.h>
+#include <xen/sched.h>
+//#include <xen/string.h>
+#include <xen/mm.h>
+#include <xen/socket.h>
+#include <xen/sockios.h>
+//#include <xen/in.h>
+#include <xen/errno.h>
+#include <xen/interrupt.h>
+#include <xen/if_ether.h>
+//#include <xen/inet.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
+//#include <xen/proc_fs.h>
+#include <xen/init.h>
 //#include <net/ip.h>
 //#include <net/route.h>
-#include <xeno/skbuff.h>
+#include <xen/skbuff.h>
 //#include <net/sock.h>
 //#include <net/arp.h>
 
index a4a5e202426478feb80efc757d1c480540c45fcb..04c28d0af3250d02b9accd862d56cabfa675ae20 100644 (file)
 #include <asm/uaccess.h>
 #include <asm/system.h>
 #include <asm/bitops.h>
-#include <xeno/config.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/lib.h>
-#include <xeno/mm.h>
-#include <xeno/socket.h>
-#include <xeno/sockios.h>
-#include <xeno/errno.h>
-#include <xeno/interrupt.h>
-#include <xeno/netdevice.h>
-#include <xeno/skbuff.h>
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
+#include <xen/socket.h>
+#include <xen/sockios.h>
+#include <xen/errno.h>
+#include <xen/interrupt.h>
+#include <xen/netdevice.h>
+#include <xen/skbuff.h>
+#include <xen/init.h>
 
 static void dev_watchdog(unsigned long arg)
 {
index ad669feb3a9b535ae2f91e08431f2a96965e82f5..e7e848565cc5344ca04af170739a750126317226 100644 (file)
  *             as published by the Free Software Foundation; either version
  *             2 of the License, or (at your option) any later version.
  */
-#include <xeno/types.h>
-//#include <xeno/kernel.h>
-#include <xeno/sched.h>
-//#include <xeno/string.h>
-#include <xeno/mm.h>
-#include <xeno/socket.h>
-//#include <xeno/in.h>
-//#include <xeno/inet.h>
-//#include <xeno/ip.h>
-#include <xeno/netdevice.h>
-#include <xeno/etherdevice.h>
-#include <xeno/skbuff.h>
-#include <xeno/errno.h>
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/init.h>
+#include <xen/types.h>
+//#include <xen/kernel.h>
+#include <xen/sched.h>
+//#include <xen/string.h>
+#include <xen/mm.h>
+#include <xen/socket.h>
+//#include <xen/in.h>
+//#include <xen/inet.h>
+//#include <xen/ip.h>
+#include <xen/netdevice.h>
+#include <xen/etherdevice.h>
+#include <xen/skbuff.h>
+#include <xen/errno.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/init.h>
 //#include <net/dst.h>
 //#include <net/arp.h>
 //#include <net/sock.h>
index c91f2d5fc2c08b607832e10f2d083a7287818a3b..74543db0382fb17f39f1827716d6dd625b58d376 100644 (file)
  *     2 of the License, or (at your option) any later version.
  */
 
-#include <xeno/config.h>
-#include <xeno/lib.h>
-#include <xeno/errno.h>
-#include <xeno/types.h>
-#include <xeno/sched.h>
-#include <xeno/mm.h>
-#include <xeno/interrupt.h>
-#include <xeno/slab.h>
-#include <xeno/netdevice.h>
-#include <xeno/skbuff.h>
-#include <xeno/cache.h>
-#include <xeno/init.h>
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/errno.h>
+#include <xen/types.h>
+#include <xen/sched.h>
+#include <xen/mm.h>
+#include <xen/interrupt.h>
+#include <xen/slab.h>
+#include <xen/netdevice.h>
+#include <xen/skbuff.h>
+#include <xen/cache.h>
+#include <xen/init.h>
 
 #include <asm/uaccess.h>
 #include <asm/system.h>